5

我们的学校项目需要一种方法来启动单词实例并跟踪文档是否已关闭。word中的COM api没有这个事件,有没有其他方法可以做到这一点?

目前我们正在使用 word 中的 COM api,但其他一切都很好。我们正在用 C# 编程。

4

2 回答 2

2

如果您使用 Microsoft.Office.Interop.Word 库,您也可以订阅一个活动:

Microsoft.Office.Interop.Word.Application wordApp =
    new Microsoft.Office.Interop.Word.Application();
wordApp.DocumentBeforeClose +=
    new ApplicationEvents4_DocumentBeforeCloseEventHandler(
        wordApp_DocumentBeforeClose);

...

private void wordApp_DocumentBeforeClose(Document Doc, ref bool Cancel)
{
    // Do your thing
}

编辑:

要处理文件锁定 ==> 看看这篇文章。如您所见,在 DocumentBeforeClose 中做了一些事情:

  1. 检查文档是否已保存。如果不是 ==> 询问在哪里保存它并自己做。
  2. 自行关闭文档
  3. 关闭字

处理好这些事情后,你就可以做你的事情了。锁应该被释放。

于 2011-02-09T19:27:31.250 回答
2

使用 winword 进程检查在特定文件上运行的进程是否退出。

如果您不知道新启动实例的进程,请使用此或简单地挂钩进程的退出事件。

获取所有文字处理

var info = Process.GetProcessesByName("winword").FirstOrDefault();

使用识别特定文件的进程 Process.MainWindowTitle

钩住进程的退出事件Process.Exited

于 2011-02-10T12:55:17.637 回答