当前位置: 首页 > >

QT

发布时间:

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组件的就可以了:



运行测试:




友情链接: