我想知道是否有办法获取用户机器上打开的所有 Word 实例的列表?
我试过这个:
Process[]wordProcesses = Process.GetProcessesByName("WINWORD");
上面的行似乎总是只返回一个进程,我想是因为只有一个 MS Word 进程正在运行,但许多 Word 应用程序是打开的。
这里的一种方法是联系并使用AccessibleObjectFromWindow()
从每个正在运行的 Word 实例获取 Microsoft.Office.Interop.Word.Application 实例。这样就可以轻松地查询他们的 Documents 集合并执行您需要执行的任何其他操作。
这个 SO 问题的答案会让你非常接近:如何使用后期绑定访问 Microsoft Word 现有实例。该答案使用 IDispatch 引用来操作从中获得的 Application 实例,AccessibleObjectFromWindow()
但您应该能够执行以下操作:
if (hr >= 0)
{
var app = ptr.Application;
foreach (var item in app.Documents)
{
var doc = (Document) item;
Console.WriteLine(doc.FullName);
}
}