如何获得所有正在运行的对象

COM: How to get all running objects

本文关键字:运行 对象 何获得      更新时间:2023-10-16

你知道GetActiveObject只能获得第一个打开的应用程序的COM对象。如何获得所有运行对象?例:我运行两个Excel应用程序,如何在c++代码中获得两个Excel对象?

正如Hans所说,通常只有一个Excel实例。如果只有一个实例,它将拒绝打开同一文档两次。

但是可能不止一个,通常是在显式启动了第二个的情况下。在这种情况下,它可能会打开相同的文件(尽管您会收到关于锁定的警告)。

它们可能同时出现在运行对象表中,也可能不同时出现。使用ROT查看器或类似的程序来确定是否存在这种情况:

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

最后你可以考虑使用Microsoft UI Automation:

  • http://msdn.microsoft.com/en-us/library/ms753388.aspx
  • http://msdn.microsoft.com/en-us/library/ms726294 (VS.85) . aspx