如何连接到被包容的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