在 Windows 7 中,我有一个进程外 COM 服务器,例如“MyComServer.exe”。我将其注册为CLSCTX_LOCAL_SERVER
和REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED
。
在交互式会话中,会话号 > 0,我的 MyComServer.exe 只运行一个实例,无论有多少客户端正在运行。假设我正在使用我的 COM 服务器运行 5 个 excel、3 个 matlab 和其他 7 个,我只看到 1 个 MyComServer.exe 正在运行。这很好,这就是我想要的。
如果有多个会话处于活动状态,例如会话 1、2 和 3,那么我会看到 3 个 MyComServer.exe 实例。使用任务列表,我可以看到每个实例都在不同的会话中运行。这也很好,正如我所愿。
但是,如果我从会话 0 中使用它,我会看到每个客户端都有一个实例。假设我有 3 个 Windows 服务都在使用它,然后我看到 3 个 MyComServer.exe 实例。使用任务列表,我看到所有 3 个都在会话 0 中运行。会话 0 中的进程可以共享进程外 COM 服务器吗?
调查这个问题我注意到PostMessage
会话 0 中的进程之间不起作用。阅读我理解的文档PostMessage
不应该跨会话,这意味着会话 0 中的进程无法向会话 1 中的进程发布消息。我注意到,虽然会话 1 中的进程可以向同一会话中的另一个进程发布消息,但会话 0 中的进程不能向任何其他进程发布消息,即使目标也在会话 0 中运行。有人可以确认一下吗?它似乎与 Microsoft 文档不一致。
谢谢。