【问题标题】:Get Process ID of COM Server获取 COM 服务器的进程 ID
【发布时间】:2011-06-30 02:33:36
【问题描述】:

我正在通过将 Windows 消息直接发送到 HWND 和调用由自动化应用程序公开的 COM 服务器组合来进行一些自动化操作。

如果有多个实例在运行,我需要能够确定 COM 服务器的进程 ID,以便我可以通过 COM 调用访问同一个实例,作为我向其发送 Windows 消息的实例。

我可以用正在运行的对象表枚举所有正在运行的 COM 服务器并取回所有它们的名字对象,但是 COM 对象本身没有公开任何我可以用来获取窗口句柄、线程 ID、进程 ID 或任何东西的方法那种。

有没有什么方法可以根据名字对象或名字对象的实际绑定 COM 对象找出 COM 服务器的进程 ID 是什么?

谢谢!

【问题讨论】:

  • 不,让这些信息无法被发现在很大程度上是设计使然。您需要服务器的帮助。

标签: winapi com moniker com-server


【解决方案1】:

我相信 kimgr CoGetServerPID 函数会为您提供 COM 服务器的进程 ID。但是,它仅在 process-id 为

还有一篇 3 Ways to Get a COM Server Process ID 博客文章可能值得一看。不过自己没试过。

【讨论】:

    【解决方案2】:

    如果您同时控制(编写代码)服务器和客户端,您可以在 COM 接口中添加一个方法,该方法将返回进程/线程 ID 或任何类似性质的内容(例如,如果它是远程的,则为服务器主机名)服务器端。我第二个@Hans - 除非您可以访问服务器实现,否则您可能会在设计上不走运。

    【讨论】:

    • 这并不是一个真正有吸引力的解决方案,因为服务器可能会在其 PID 上撒谎。
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2020-10-28
    • 2013-01-20
    • 2012-09-06
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多