获取所有打开的Word应用程序的集合
问题描述:
我想知道是否有办法获取在用户计算机上打开的所有Word实例的列表?获取所有打开的Word应用程序的集合
我已经试过这样:
Process[]wordProcesses = Process.GetProcessesByName("WINWORD");
就永远线似乎只返回一个过程,我想是因为只有一个微软Word程序正在运行,但很多字的应用程序是开放的。
答
此处的一种方法是联系并使用AccessibleObjectFromWindow()
从每个正在运行的Word实例中获取一个Microsoft.Office.Interop.Word.Application实例。这样可以很容易地查询他们的文档集合,并做任何你需要做的事情。
这个SO问题的答案会让你真的很接近:How to access Microsoft Word existing instance using late binding。这个问题的答案使用一个IDispatch参考操纵从AccessibleObjectFromWindow()
获得的应用实例,但你应该能够做这样的事情:
if (hr >= 0)
{
var app = ptr.Application;
foreach (var item in app.Documents)
{
var doc = (Document) item;
Console.WriteLine(doc.FullName);
}
}
你实际上是在问有多少文档是打开的 - 你不会要能够使用Process类来做到这一点,你可能有更多的运气与VSTO ... – Dave 2012-08-16 12:07:42
http://stackoverflow.com/questions/4757615/c-sharp-list-currently-open-files-and-programs - 这可能会帮助 – KyorCode 2012-08-16 12:08:43