alt 进程外com组件的连接事件

来源:互联网 发布:淘宝衣服包装袋 编辑:程序博客网 时间:2024/05/03 16:22

  1. 问题的提出
类似于设计模式中Observer模式,在COM编程中,希望实现一种机制,使得对数据变化感兴趣的若干部分能够接受到数据的变化通知。一个典型的应用:计算机监控程序在计算机状态数据发生变化时通知系统管理员、系统日志程序、发送电子邮件等等,在com编程中连接点为我们方便的做到了这一点,在进程内com组件中我参考http://www.vckbase.com/document/viewdoc/?id=1538杨老师的文章很容易就参实现连接点的挂接,可是在进程外组件中去挂接失败,如下面代码所示:

这个问题我重试了很多次,开始以为是代理存根没有注册,后来注册了也一样,在网上搜索了一下,原来也有很多人碰到了和我一样的问题并且没有找到很好的解决办法,我纳闷了好久,后来在微软的管网上找到了相关介绍,网址:http://support.microsoft.com/kb/194179/zh-cn示例演示如何使用 ATL IDispEventImpl 和 IDispEventSimpleImpl 类来创建 ATL 接收器,但上面是在进程内组件中实现的,今天我这个例子是在进程外组件中实现,终于成功实现了进程外组件连接点事件的挂接,下面我们来看自己实现的进程外组件和接收器。

2.实现部分

一、进程外com组件实例

用vs2008 atl 工程生成向导生成一个com组件工程

组件类型选择“可执行文件EXE”

创建一个atl简单对象接口,注意要技术连接点

添加一个OnMsg接口函数,在CProxy_ISrcObjEvents类中添加连接点的实现代码

 

 生成sys1.idl代码如下:

OnMsg接口函数的实现

这样,进程内组件工程的实现就完成了,下面我们要实现在另一个进程里调用OnMsg接口函数,并且能在接收器里接收到事件。

 

 二、进程外组件事件连接

创建一个win32工程,记得支持alt,加上头文件

#include <atlcom.h>
#include <atlwin.h>

 

 1、接收器的实现代码

添加一个CSinkTest类,代码如下:

调用部分代码

 执行结果:

 

源码下载:http://download.csdn.net/source/2554168

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信客服电话打不通怎么办 华为手机网络信号不好怎么办 酷我好友动态加载不了怎么办? 米兔电话手表停机了怎么办 糖猫电话手表停机了怎么办 360电话手表停机了怎么办 小天才电话手表停机怎么办 移动手机卡不知道号码怎么办 天猫退款手机号换了怎么办 科目二考试脚抖怎么办 面试新工作没打电话怎么办 怀孕5个月胎位低怎么办 做业务很害怕打电话怎么办 固定电话总是接到骚扰电话怎么办 电话卡通话被限制了怎么办? 手机名单拉黑了怎么办 被苹果6s被拉黑怎么办 重庆福利企业解聘残疾职工怎么办 被银行拉入黑名单怎么办 借的钱还不起了怎么办 支付宝手机号空号了怎么办 到处贷不到钱了怎么办 还不起钱借不到怎么办 闯红灯收到短信不去扣分怎么办 被一家公司骗了怎么办 oppo手机无线网信号差怎么办 oppo手机无线网网速慢怎么办 电脑无法解析dns地址怎么办 vivox9手机卡顿反应慢怎么办 vivo手机设置成英文怎么办 wi-fi模块坏了怎么办 苹果手机dns被劫持怎么办 圆通快递一直不派送怎么办 凯越没有高压火怎么办 理财回执单丢了怎么办 余额宝超10万怎么办 商场主题经营改变商户怎么办 一个好的项目需要资金怎么办 没有做暂估入库的凭证怎么办 电脑显示宽带连接已断开怎么办 电脑ip地址连不上网怎么办