检测用户何时打开word文档以及何时输入word文档(在c#中)

时间:2012-06-17 16:13:13

标签: c# office-interop keyboard-events

我想做以下事情: 每当word文档打开时我需要以某种方式保存它,然后如果用户开始输入它,我想节省编辑文档的时间。 我刚刚进入第一阶段,我似乎无法管理用户何时打开文档。 我尝试使用Microsoft.Office.Interop.Word,但是,这样我不想启动word应用程序,除非用户打开文档。但是,当我想初始化Microsoft.Office.Interop.Word.Application时,这是我看到可能的唯一方式。 有没有办法,通过使用Microsoft.Office.Interop.Word API来检测用户打开文件的事件?

我尝试了以下内容(显然它不起作用,因为它只是打开一个word office应用程序)

using Word = Microsoft.Office.Interop.Word;
Word.Application oWord = new Word.Application(); 
oWord.Visible = true;
oWord.DocumentChange += new Word.ApplicationEvents4_DocumentChangeEventHandler(oWord_DocumentChange);
...

private void oWord_DocumentChange()
{
   Console.WriteLine("DocumentChange");
}

另外,我想也许可以使用Microsoft.Office.Interop.Word.Document,但不能。 我开始开发自己的方法,但它似乎是浪费,因为这个api已经构建。 任何帮助都会很棒..谢谢。

2 个答案:

答案 0 :(得分:3)

您是否已尝试创建Application level Add-in。该加载项应具有检测文档的第一次和最后一次更改所需的所有事件处理程序。

答案 1 :(得分:0)

也许您可以经常检查Word的打开实例,如果找到一个,那么您可以使用interop来获取该实例。

您可以使用类似FindWindowEnumWindows的内容来检查Word的实例(或者在.Net中可能有一些内置的方法,我现在还记不住了) ,然后可能使用GetObject来获取实例。此link描述了GetObject vs CreateObject