【问题标题】:COleDispatchDriver with a specific exe as the COM serverCOleDispatchDriver 具有特定的 exe 作为 COM 服务器
【发布时间】:2012-08-08 16:19:08
【问题描述】:

我继承了一个应用程序,该应用程序由一堆使用 COM 和 COleDispatchDriver 进行通信的 exe 文件组成。有一个主要的“客户端”exe,以及几个提供服务的“服务器”可执行文件。

此时,客户端进程使用 COleDispatchDriver::CreateDispatch() 启动服务器,将解析为类 ID 的应用程序 ID 传递。这样做的问题是它依赖于正在注册的 COM 服务器(一个潜在的故障点)。如果机器上有多个不同版本的 COM 服务器 exe,也可能会出现问题。

我想让它不那么脆弱,而不必在此时完全重新架构应用程序。有没有办法保持相同的通信机制,但显式启动特定的服务器应用程序?客户端知道服务器应用程序在哪里以及它们被称为什么(它们与客户端在同一目录中)。

【问题讨论】:

    标签: com mfc


    【解决方案1】:

    这有点棘手,但您可以自己手动编组您需要的接口。让客户端启动服务器,该服务器创建客户端对象并使用CoMarshallInterface() 将其接口编组回客户端。

    一旦客户端编组了接口,您应该能够通过调用 QueryInterface 来获取 IDispatch 接口。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2013-08-23
      • 2011-11-10
      • 2016-06-20
      • 2011-03-13
      • 2014-06-09
      • 2014-04-17
      • 2011-06-23
      • 2014-03-20
      相关资源
      最近更新 更多