Winapi 获取COM服务器的进程ID

Winapi 获取COM服务器的进程ID,winapi,com,moniker,com-server,Winapi,Com,Moniker,Com Server,我正在通过将windows消息直接发送到HWNDs和对自动应用程序公开的COM服务器的调用相结合来实现一些自动化 如果有多个实例正在运行,我需要能够确定COM服务器的进程ID,这样我就可以通过COM调用命中与我发送windows消息的实例相同的实例 我可以使用running object表枚举所有正在运行的COM服务器,并获取它们的名字对象,但是COM对象本身没有公开任何方法,我无法使用这些方法获取窗口句柄、线程ID、进程ID或任何类似的内容 有没有办法根据名字对象或名字对象的实际绑定COM对象

我正在通过将windows消息直接发送到HWNDs和对自动应用程序公开的COM服务器的调用相结合来实现一些自动化

如果有多个实例正在运行,我需要能够确定COM服务器的进程ID,这样我就可以通过COM调用命中与我发送windows消息的实例相同的实例

我可以使用running object表枚举所有正在运行的COM服务器,并获取它们的名字对象,但是COM对象本身没有公开任何方法,我无法使用这些方法获取窗口句柄、线程ID、进程ID或任何类似的内容

有没有办法根据名字对象或名字对象的实际绑定COM对象来确定COM服务器的进程ID是什么


谢谢

如果您同时控制(编写代码)服务器和客户端,您可以向COM接口添加一个方法,该方法将在服务器端返回进程/线程ID或任何此类属性(例如,如果是远程的,则返回服务器主机名)。I second@Hans-除非您有权访问服务器实现,否则您可能在设计上运气不佳。

我相信kimgr函数将为您提供COM服务器的进程id。然而,只有当进程id为“否”时,它才起作用,使此信息不可公开在很大程度上是出于设计。您需要服务器的帮助。这并不是一个真正有吸引力的解决方案,因为服务器可能会对其PID撒谎。