Evento de salvamento de postagem do VSTO Word

Desculpe pela extensão disso. No passado, fui solicitado antes a incluir tudo o que tentei ao fazer esse tipo de pergunta.

Estou escrevendo um suplemento do Word e preciso fazer alterações no documento que não consigo obter usando o modelo de objeto do Word. Portanto, depois que o documento é salvo no disco, preciso capturar esse evento, fechar o arquivo, fazer o que preciso e reabri-lo. (Eu sei, não é elegante, mas é com isso que tenho que trabalhar.)

O Word possui o evento Antes de Salvar e Antes de Fechar, mas não o evento depois de salvar. Encontrei truques online para simular um evento pós-salvamento criando outro thread e usando COMsIMessageFilter (não do System.Windows.Forms) para manipular chamadas de nova tentativa COM ou postar uma mensagem de volta no thread principal para que eu possa executar o código depois que ele for salvo. Mas isso não funciona porque se o arquivo é salvo como resultado do usuário tentar fechar o documento, não consigo obter o nome do arquivo no meu método de "retorno de chamada" porque o objeto Word.Document já foi excluído.

Portanto, tentei chamar explicitamente Save me no meu manipulador de eventos BeforeSave e retornar Cancel = true. Isso funciona muito bem quando o usuário seleciona salvar ou eles já foram salvos no disco. Mas se o usuário fechar um novo documento sem salvar e selecionar 'yes' para salvar ou não, o Word exibirá outra caixa de diálogo "SaveAs" depois que eu já tiver manipulado o save depois de retornar do evento BeforeSave, embora Defino Cancel = true no meu manipulador de eventos BeforeSave.

Então, tentei fazer algo semelhante ao evento BeforeClose. Lido com o fechamento e me salvo e retornando Cancel = true do meu manipulador de eventos. Mas isso impede que o Word tente fechar vários documentos quando o usuário está tentando desligar o aplicativo.

Eu até tentei lidar com WM_CLOSE, mas isso levou a problemas semelhantes aos mencionados acima.

Alguém pode oferecer uma solução?

questionAnswers(1)

yourAnswerToTheQuestion