Введение

Задачи программиста могут быть максимально узконаправленными и со своими нюансами, так и мне выпала честь сделать функционал открытия документа, звучит легко, однако сложности добавляет тот факт, что документ должен ОТКРЫВАТЬСЯ, не его внутренняя копия от Word, и не в одинаковом PID, в котором открыты другие документы…

Решение?

Для начала поймем, какой параметр нам необходим для нашей задачи из этого списка

Методом проб и ошибок, был выявлен нужный нам параметр, это /t

И в чем же может быть проблема? Все что нам остается это пробросить этот аргумент с путем к нашему файлу и запустить процесс

myProcess.StartInfo.Arguments = $"/t" + "\"" + filePath + "\"";

Word запускается отдельным процессом, содержание файла одинаково, все работает как надо… или нет?

Как же понять, что мы открыли текущий документ не правильно? Тут есть две зацепки.

1 В шапке экземпляра процесса вместо имени открываемого документа - “Документ 1”

2 При CTRL+S открывается диалоговое окно “Сохранить как”

Что по сути говорит нам, что документ который мы открыли, не исходный, а лишь так скажем, “полная” копия.

Решение!

Были исследованы сотни вкладок документации от Microsoft, столько же примеров кода из github, ничего не давало результат. Только в очередной раз методом проб и ошибок. Пробовал добавлять в StartInfo.Arguments несколько аргументов, через +=, с/без экранированных символов, и наконец смог подобрать правильную комбинацию.


myProcess.StartInfo.Arguments = $"/t  \"{filePath}\"";

Наконец после запуска нескольких экземпляров, мы можем увидеть 3 процесса с правильными шапками.

Пост был быстр, надеюсь лаконичен. У вас возник наверное вопрос вроде: “а зачем нам в принципе этим заниматься, неужели нам не достаточно открывать все файлы в одном экземпляре Word’а но в разных окнах? “. И я вам с радостью отвечу! Дело в том что [ДАННЫЕ УДАЛЕНЫ]