获取COM服务器的进程ID

8
我正在通过直接向HWND发送Windows消息和调用自动化应用程序公开的COM服务器来进行自动化。如果有多个实例运行,我需要能够确定COM服务器的进程ID,以便我可以使用与我发送Windows消息的实例相同的COM调用命中该实例。我可以使用运行对象表枚举所有正在运行的COM服务器,并为它们获取moniker,但是这些COM对象本身没有公开任何方法可用于获取窗口句柄、线程ID、进程ID或任何类似的内容。是否有办法根据moniker或moniker的实际绑定COM对象来确定COM服务器的进程ID?谢谢!

不,使这些信息无法被发现是经过精心设计的。你需要从服务器获取帮助。 - Hans Passant
2个回答

6
如果您控制(编写代码)服务器和客户端,您可以向COM接口添加一个方法,在服务器端返回进程/线程ID或任何此类内容(例如,如果是远程服务器,则为服务器主机名)。我赞同@Hans的看法-除非您可以访问服务器实现,否则设计上可能会使您感到困惑。

这并不是一个非常吸引人的解决方案,因为服务器可能会潜在地伪造其PID。 - Fredrik Orderud

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接