QT - QT中的COM编程(dll进程内组件形式)

4 篇文章 5 订阅

1、开发环境

操作系统:Windows10

编译环境:QT5.14.2 + Visual Studio2017

关于在QT中以exe形式进程外组件形式进行COM编程可以参考文章:QT中的COM编程(exe进程外组件形式)

由于在进行exe进程外组件编程时发现,对于COM组件的注册及卸载用起来不是很方便(水平不够-_-!,欢迎一起交流),所以就想采用以dll的形式进行COM编程,当采用dll形式时,就可以采用COM编程标准的注册与卸载组件方式了,具体可参考:COM的简单介绍中的 3.2 章节内容。

所以,在本文中主要记录在QT中以dll进程内组件的形式进行COM编程。当采用dll进程内组件的形式时,推荐使用VS进行COM组件的开发,QT采用MSVC构建套件调用COM组件,所以需要在VS中配置QT插件,可参考:VS2017配置QT插件

2、VS2017中开发COM组件

2.1、创建ActiveQt Server工程

在VS2017中,新建项目,选择 Qt -> Qt ActiveQt Server:

建立工程如下:

当建立  Qt ActiveQt Server 工程是,编译器会自动配置好相关属性,比如 clsid 等,以及工程的生成形式:

双击 xxx.ui 文件,打开QT设计师,编辑界面,在界面上拖放一个日历控件:

添加测试函数:

然后生成项目:

此时就会显示,dll已经成功被注册!(需要注意的是,VS2017一定要以管理员身份打开!

此时可以看到 ActiveQtServerTest_dll已经被注册进注册表中,其中CLSID为 CEA2C589-,是 QAXFACTORY_DEFAULT 宏定义中的第一个GUID:

2.2、发布dll并进行网页测试

首先需要寻找dll所需要的依赖库,仿照 QT中的COM编程(exe进程外组件形式)中的 2.3.1章节中的内容进行发布:

会发现多出了很多相关的依赖库文件:

仿照 QT中的COM编程(exe进程外组件形式)中的 2.3.2章节中的内容,编写一个xx.html文件进行测试,其中的 classid换成自己的id(即上文中的CLSID),然后打开:

2.3、自注册

为了方便注册与卸载,可以在 dll目录 下添加以下连个文件分别用于dll组件的注册与卸载:

Register.bat:

cd /d %~dp0
@regsvr32 ActiveQtServerTest_dll.dll
@exit

Unregister.bat:

cd /d %~dp0
@regsvr32 /u ActiveQtServerTest_dll.dll
@exit

注册:

卸载:

(需要注意的是,运行这两个.bat文件都需要以管理员的身份打开运行!

3、QT Creator中调用COM组件

参考 QT中的COM编程(exe进程外组件形式)中的 3.2.1 章节中的内容,直接套用它的代码,只需要把 clsid 改成该COM组件的就可以了:

运行测试:

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值