我想知道是否有办法获取用户计算机上打开的所有Word实例的列表?
我试过这个:
Process[]wordProcesses = Process.GetProcessesByName("WINWORD");
上面的一行似乎总是只返回一个进程,我想因为只有一个MS Word进程正在运行,但很多Word应用程序都是打开的。
答案 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);
}
}