2012-01-04 102 views
0

您知道GetActiveObject只是可以獲取第一個打開的應用程序的COM對象。如何獲取所有正在運行的對象?例如我運行兩個Excel應用程序,如何獲取C++代碼中的兩個Excel對象?COM:如何獲取所有正在運行的對象

+0

¤請參閱[Microsoft知識庫文章180885](http://support.microsoft.com/kb/190985)「如何獲取Excel或Word文檔的IDispatch來自OCX「。這篇知識庫文章被解釋爲[爲什麼無法直接在應用程序實例中獲取](http://support.microsoft.com/kb/238975)的文章被引用爲您的問題的答案。我在一兩秒鐘內發現了這些內容。在這裏鍵入它,令人驚訝的筆記本電腦鍵盤表現得像活着,甚至關閉Firefox標籤,花了幾個數量級的時間。我討厭目前的筆記本電腦設計,鼠標墊。乾杯&hth。, – 2012-01-04 07:41:02

+0

我讀過這兩篇文章。但是這種方式仍然無法解決我的問題。所以,如果兩個Excels打開同一個文檔,我們只能得到第一個,這是一個問題。其他解決方案?謝謝。 – ldlchina 2012-01-04 07:53:26

+0

這是通過設計,實際上只有一個Excel運行的實例。使用Taskmgr.exe,Processes選項卡輕鬆查看。使用Workbooks對象迭代打開的文檔。 – 2012-01-04 11:18:51

回答

1

漢斯說,通常只有一個Excel實例。如果只有一個實例,它將拒絕兩次打開同一個文檔。

但是可能有不止一個,通常如果明確啓動了第二個。在這種情況下,它可能會打開相同的文件(儘管您會收到關於鎖定的警告)。

它們可能也可能不會同時出現在運行對象表中。使用ROT觀衆或這樣的事情,以確定是否是這樣的話:

http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/ccccc9bd-f21a-4f74-a3f0-64a594fa1b16

最後,你可能會考慮使用微軟UI自動化:

相關問題