ATL创建进程外COM组件服务(C++图解说明) 您所在的位置:网站首页 Localserver ATL创建进程外COM组件服务(C++图解说明)

ATL创建进程外COM组件服务(C++图解说明)

2024-02-01 23:15| 来源: 网络整理| 查看: 265

作者: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 实验室设备网 版权所有