2012-01-04 29 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自动化:

相关问题