0
我想知道是否有辦法獲取在用戶計算機上打開的所有Word實例的列表?獲取所有打開的Word應用程序的集合
我已經試過這樣:
Process[]wordProcesses = Process.GetProcessesByName("WINWORD");
就永遠線似乎只返回一個過程,我想是因爲只有一個微軟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