我正在通过将Windows消息直接发送到HWND并调用自动化应用程序公开的COM服务器来实现一些自动化。
如果有多个实例正在运行,我需要能够确定COM服务器的进程ID,这样我可以使用COM调用命中相同的实例作为我发送Windows消息的实例。
我可以使用正在运行的对象表枚举所有正在运行的COM服务器,并为所有这些服务器返回monikers,但COM对象本身不会公开任何可用于获取窗口句柄,线程ID,进程ID或任何内容的方法那种。
有没有办法弄清楚,基于名字对象或名字对象的实际绑定COM对象,COM服务器的进程ID是什么?
谢谢!
答案 0 :(得分:6)
如果您控制(编写代码)服务器和客户端,您可以向COM接口添加一个方法,该方法将返回进程/线程ID或此类性质的任何内容(例如服务器主机名,如果它是远程的)服务器端。我是第二个@Hans - 除非您有权访问服务器实现,否则您可能会因设计而失去运气。
答案 1 :(得分:0)
我相信kimgr CoGetServerPID函数将为您提供COM服务器的进程ID。