如何连接到被包容的COM组件的连接点
时间:2011-12-07
来源:互联网
             我实现了一个进程内COM组件(ATL),双接口(dual)。
该组件包容了一个进程外COM组件,并需要连接到该组件的默认连接点,该如何实现呢?
            该组件包容了一个进程外COM组件,并需要连接到该组件的默认连接点,该如何实现呢?
作者: hailongxl 发布时间: 2011-12-07
             你看看包容的实现,得到被包容组件的接口,然后利用这个接口来得到连接点容器IConnectionPointContainer,然后再得到连接点            
            作者: fishion 发布时间: 2011-12-07
             这个机制我知道,我的进程内组件的IDL是这样的:
C/C++ code
该接口从IDispatch接口派生,所以该组件已经实现了一个IDispatch接口(使用ATL的IDispatchImpl实现)。
如果需要连接到进程外组件的出接口,又需要一个不同的IDispatch接口来进行Advise,这个该如何处理?难道必须在该进程内组件内添加一个sink对象?有没有更简单的方法呢?
            C/C++ code
interface ICallerDev : IDispatch { [id(1), helpstring("method Beep")] HRESULT Beep([in]BSTR devId,[in]int times); [id(2), helpstring("method Display")] HRESULT Display([in]BSTR devId,[in]BSTR info,[in]BSTR formId); [id(3), helpstring("method SPConnect")] HRESULT SPConnect(); [id(4), helpstring("method SPDisconnect")] HRESULT SPDisconnect(); };
该接口从IDispatch接口派生,所以该组件已经实现了一个IDispatch接口(使用ATL的IDispatchImpl实现)。
如果需要连接到进程外组件的出接口,又需要一个不同的IDispatch接口来进行Advise,这个该如何处理?难道必须在该进程内组件内添加一个sink对象?有没有更简单的方法呢?
作者: hailongxl 发布时间: 2011-12-07
             顶起。
除了内嵌一个SINK来advise之外有没有其他好方法?更轻便的?
谢谢了!
            除了内嵌一个SINK来advise之外有没有其他好方法?更轻便的?
谢谢了!
作者: hailongxl 发布时间: 2011-12-07
             既然你都明白包容的机制了,那操作也不难了呀            
            作者: fishion 发布时间: 2011-12-07
             如果是组件要接收事件,那sink显然应该在组件里。如果是客户要接收,可以直接让客户获得内部对象的接口,反正包容并不暗示是同一个对象。
不过为什么不能用同一个IDispatch呢...DISPID不一样的
            不过为什么不能用同一个IDispatch呢...DISPID不一样的
作者: ndy_w 发布时间: 2011-12-07
 相关阅读 更多  
      
    热门阅读
-  
 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
          阅读:74
 -  
 如何安装mysql8.0
          阅读:31
 -  
 Word快速设置标题样式步骤详解
          阅读:28
 -  
 20+道必知必会的Vue面试题(附答案解析)
          阅读:37
 -  
 HTML如何制作表单
          阅读:22
 -  
 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
          阅读:31
 -  
 ET文件格式和XLS格式文件之间如何转化?
          阅读:24
 -  
 react和vue的区别及优缺点是什么
          阅读:121
 -  
 支付宝人脸识别如何关闭?
          阅读:21
 -  
 腾讯微云怎么修改照片或视频备份路径?
          阅读:28
 















