VSTO Word post сохранить событие

Извините за длительность этого. В прошлом меня уже просили включать все, что я пробовал, задавая подобные вопросы.

Я пишу надстройку Word, и мне нужно внести изменения в документ, которых я не могу достичь с помощью объектной модели Word. Поэтому после сохранения документа на диск мне нужно записать это событие, закрыть файл, сделать то, что мне нужно, и снова открыть его. (Я знаю, не элегантно, но это то, с чем я должен работать.)

В Word есть «До сохранения» и «До закрытия», но нет события «после сохранения». Я нашел трюки в Интернете, чтобы смоделировать событие после сохранения, создав другой поток и используя COMIMessageFilter (не из System.Windows.Forms) для обработки вызовов COM Retry или отправки сообщения обратно в главный поток, чтобы я мог выполнить код после его сохранения. Но это не работает, потому что если файл был сохранен в результате попытки пользователя закрыть документ, я не могу получить имя файла в моем методе «обратного вызова», поскольку объект Word.Document уже удален.

Поэтому я попытался явно вызвать «Сохранить себя» в моем обработчике событий BeforeSave и вернуть «Отмена = истина». Это прекрасно работает, когда пользователь выбирает сохранить или когда-то сохранял на диск. Но если пользователь закрывает новый документ без сохранения и затем выбирает «да» для того, хотят ли они сохранить, Word отображает другое диалоговое окно «Сохранить как» после того, как я уже обработал сохранение после того, как вернусь из события BeforeSave, даже если Я установил Cancel = true в моем обработчике событий BeforeSave.

Тогда я попытался сделать нечто подобное с событием BeforeClose. Я обрабатываю закрытие и сохраняю себя, а затем возвращаю Cancel = true из моего обработчика событий. Но это не дает слово попытаться закрыть несколько документов, когда пользователь пытается закрыть приложение.

Я даже пытался обработать WM_CLOSE, но это привело к тем же проблемам, что и выше.

Кто-нибудь может предложить решение?

Ответы на вопрос(1)

Ваш ответ на вопрос