在Qt中使用ActiveX控件(使用VS2008开发)

本文详细介绍了如何在Qt中查找、识别及调用磁盘上已安装的ActiveX控件,并通过实例展示了如何使用UUID进行控件的加载与函数调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActiveX控件是Microsoft Windows系统上特有的控件,Qt中提供QAxContainer和QAxServer组件(lib文件)支持ActiveX控件,前者允许我们使用已有的ActiveX控件,后者允许我们使用Qt编写ActiveX控件。本文只讲如何在Qt中使用已有的ActiveX控件。


一、ActiveX控件在磁盘的什么地方

使用网页下载cab包安装的控件可以在 C:\WINDOWS\Downloaded Program Files 文件夹下查看控件列表,通过文件属性可以查看ActiveX控件的GUID和文件路径。

这个文件夹里的东西不能复制,不能剪切,不能粘贴,主要看这些ActiveX控件的属性里的UUID,这个ID就像这个控件的身份证一样,不会跟别的控件重复,不同计算机上的同一控件的UUID相同(没打错,是相同)。

如果你觉得不过瘾,还可以通过注册表看这个控件的配置文件信息和dll文件信息:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Code Store Database\Distribution Units\ ActiveX_GUID 
DownloadInformation子键:保存了cab包URL和cab包inf文件路径。 
Contains\Files子键:保存控件程序文件路径


注意,inf文件里记录着这个控件的dll文件所在的路径,一个控件可能会有多个dll,但每个dll文件都对应一个UUID,你只需要按照inf文件里的记录,找到你感兴趣的控件的UUID对应的dll文件就行了。


二、如何使用ActiveX控件的dll文件

你不需要在程序里加载ActiveX控件对应的dll文件,因为ActiveX控件在安装的时候已经在系统中注册过了,即将dll与UUID的对应关系告诉操作系统了,所以,你在代码中只需要使用UUID就行了,那么,控件的dll文件有什么用呢?除了运行控件的时候要用它以外,它还可以告诉你,这个控件支持那些操作:它有哪些函数可供你调用!

打开Visual Studio 2008的命令提示,切换到控件对应的dll所在目录,执行:

dumpcpp XXX.dll,其中XXX.dll就是那个dll的名字,然后会在dll的目录里生成一个h文件,一个cpp文件,那个h文件会告诉你,这个控件支持哪些操作:可以调用哪些函数。


三、如何调用ActiveX控件的函数

[cpp]  view plain copy
  1. #include <QApplication>  
  2. #include <QtGui>  
  3. #include <QAxWidget>  
  4. int main(int argc, char *argv[]){  
  5.     QApplication a(argc, argv);  
  6.    
  7.     QAxWidget *flash = new QAxWidget(0,0);  
  8.     flash->resize(500,80);  
  9.     flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));  
  10.     flash->dynamicCall("LoadMovie(long,string)",0,"c:/1.swf");  
  11.     flash->show();  
  12.      
  13.     return a.exec();  
  14. }  

使用dynamicCall就可以了。


参见:

1、如何删除ActiveX控件

2、dumpcpp生成的h和cpp文件的问题

3、在Qt中使用ActiveX控件(这篇非常好!)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值