【问题标题】:Get a collection of all open Word applications获取所有打开的 Word 应用程序的集合
【发布时间】:2015-03-01 08:03:40
【问题描述】:

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

我试过了:

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

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

【问题讨论】:

  • 您实际上是在询问打开了多少文档 - 您无法使用 Process 类执行此操作,您可能对 VSTO 有更多的运气...
  • stackoverflow.com/questions/4757615/… - 这可能会有所帮助

标签: c# .net ms-word


【解决方案1】:

这里的一种方法是联系并使用AccessibleObjectFromWindow() 从每个正在运行的 Word 实例中获取 Microsoft.Office.Interop.Word.Application 实例。这样就可以轻松地查询他们的 Documents 集合并执行您需要执行的任何其他操作。

这个 SO 问题的答案会让你非常接近: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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多