ATL创建进程外COM组件服务(C++图解说明) | 您所在的位置:网站首页 › Localserver › ATL创建进程外COM组件服务(C++图解说明) |
作者:HH 时间:2019-01-08 参考文献: 【1】https://blog.csdn.net/mergerly/article/details/8643472 【2】https://www.cnblogs.com/DeeLMind/p/7809115.html =============================================================================================== 关于COM技术的具体原理、技术细节及优缺点,大家可以直接百度获取,这里我将通过大量截图以向导的方式向大家特别是初学者介绍一下COM组件服务的创建过程及如何用客户端去调用该组件提供的服务。当然本文不排除有很多错误和遗漏,如果有热心朋友发现错误,请及时联系我,我将第一时间修改,降低自己的失误对大家的不利影响。 主要内容: 1)创建进程外COM组件服务; 2)创建控制台客户端,对COM组件服务进行调用测试。 具体方法如下: 1.创建ATL的COM组件工程 1.1 添加COM简单对象 1.2 命名简单对象和程序ID 1.3 选择线程模型,默认为单元,我不太理解,估计应该与多例模式类似,客户端每创建一个实例系统会根据注册信息启动一个COM组件进程。单线程,应该是不管有多少个客户端调用该组件服务,系统只创建一个COM服务组件进程,当所有客户端退出并释放资源和反初始化后,COM组件服务进程退出。 两者区别如下图: 1.4 添加方法,在类视图中,给接口添加方法 1.5 实现方法 2. 注册 2.1 重载PreMessageLoop和ParseCommandLine,后面我们通过批处理或cmd命令行,传注册命令时,系统会回调这个两个函数并向系统注册COM信息【其实不重载也可以】 2.2 让DCOM发现刚刚创建的COM组件 3. 注册进程外COM组件服务,创建下图所示的批处理文件并以管理员方式运行 3.1 查看COM组件,WIN+R中输入dcomcnfg,弹出组件服务对话框,找到DCOM配置 3.2 注册表查看,win+regedit 找到HKEY_CLASSES_ROOT,按CTRL+F,输入ATLCOMProject,查到之后可按F3向下查询 注册的目的就是让操作系统知道我们的COM组件在哪里,它的基本信息是什么,当客户端访问请求时,操作系统直接根据注册信息直接找到COM组件并启动起来;好比我们开公司一样,我们需要先到国家登记处,将公司的一些必要信息告诉登记部门,如:公司在哪里,可以干什么,你只有登记过了,才是合法的,才有资格去享受国家的资源,否则你就是黑户,外面客户就没法正常去买你所提供的服务。 4. 创建win32控制台测试工程 在main函数中添加如下代码,注意:头文件需要添加刚刚COM组建编译成功之后生成的.h和.c文件,另外程序ID为之前创建ATL简单对象时,我们随便命名的程序id。具体代码如下图所示: 5. 测试 如果想要代码,可输入:ATL创建进程外COM组件服务(C++)来获取
|
CopyRight 2018-2019 实验室设备网 版权所有 |