如何处理另一个进程中给定的IUnknown *标识的COM对象?

问题描述

| 我编写了两个小型C ++应用程序,其中一个是嵌入一些ActiveX控件的ActiveX容器。该容器应用程序知道引用ActiveX控件的“ 0”。 另一个应用程序是一个客户端,它将与前一个应用程序中的ActiveX控件进行交互。但是,我不知道如何在客户端应用程序中获取控件的句柄。由于地址空间的独立性,仅将“ 0”的指针值从服务器传输到客户端将无法完成课程。 是否可以“复制”某个COM对象的句柄,以便新创建的句柄可以被其他进程使用?我想让COM为我完成RPC工作。否则,我需要在服务器应用程序中执行所有COM调用,并亲自执行所有RPC。 :-/     

解决方法

您可能希望了解一般的RPC和COM代理。   代理位于调用进程的地址空间中,并充当远程对象的代理。从调用对象的角度来看,代理是对象。通常,代理的角色是将接口参数打包为在其对象接口中调用方法。代理将参数打包到消息缓冲区中,然后将缓冲区传递到通道上,该通道处理进程之间的传输。代理被实现为一个聚合或复合对象。它包含一个系统提供的管理器部件,称为代理管理器,以及一个或多个特定于接口的组件,称为接口代理。接口代理的数量等于已暴露给该特定客户端的对象接口的数量。对于符合组件对象模型的客户端,代理似乎是真实对象。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...