获取所有打开的Word应用程序的集合

时间:2012-08-16 12:00:39

标签: c# .net ms-word

我想知道是否有办法获取用户计算机上打开的所有Word实例的列表?

我试过这个:

Process[]wordProcesses = Process.GetProcessesByName("WINWORD");

上面的一行似乎总是只返回一个进程,我想因为只有一个MS Word进程正在运行,但很多Word应用程序都是打开的。

1 个答案:

答案 0 :(得分:1)

此处的一种方法是伸出并使用AccessibleObjectFromWindow()从每个正在运行的Word实例中获取Microsoft.Office.Interop.Word.Application实例。这样可以轻松查询其文档集合并执行您需要执行的任何操作。

这个问题的答案会让你非常接近:How to access Microsoft Word existing instance using late binding。该答案使用IDispatch引用来操作从AccessibleObjectFromWindow()获取的Application实例,但您应该可以执行以下操作:

if (hr >= 0)
{
    var app = ptr.Application;
    foreach (var item in app.Documents)
        {
            var doc = (Document) item;
            Console.WriteLine(doc.FullName);
    }
}