0

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

我试过这个:

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

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

4

1 回答 1

1

这里的一种方法是联系并使用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);
    }
}
于 2012-08-16T12:43:29.003 回答