利用qt进行ocx插件的制作以及web调用

ActiveX 技术是微软出品,这样就导致整个系统只能使用 IE 浏览器(其他浏览器可以通过插件的形式支持 OCX 的调用)

OCX插件制作

  • Vs2015,并安装好qt5.9.5
  • Iis(可从网上搜索IIS配置步骤)

 

  1. 创建QtActiveQtServer程序(QtOcxTest
  2. 编写ocx插件程序
  3. 进行编译
  • 在debug目录下找到对应项目的dll文件
  • 这个dll文件就是ocx插件(也可把后缀改成.ocx)
  • 利用windeployqt命令进行qt依赖库的导入

         

 

          4.进行qt依赖库导入

 

Inf安装信息文件制作

  • 在debug文件夹下新建文本文档(.txt),将后缀改成(.inf),名字改成default
  • 双击或者使用notepad++打开,进行编辑,内容如下所示:

        

         

 

  • 解释几个部分:

1.这里面添加了5个dll,如果不需要将 dll 打包到 cab ,则可以删除对应dll的相关信息。

2.

[QtOcxTest.dll]

file-win32-x86=thiscab

clsid={274848a0-ecab-4151-922f-f7e26e7f955a}

DestDir=11

FileVersion=1,0,0,0

RegisterServer=yes

进行简单解释:

 file-win32-x86=thiscab由于是32位编译器编译,这么写没问题。64位也可以这样写: file=thiscab

 clsid 这里,最简单的办法是找到 ocx 的来源,询问制作 ocx 作者,他们知道这里应该填写什么。

  如果找不到制作人,也有办法,手动注册 ocx ,然后查看搜索注册表

   FileVersion 也是一样,最好的办法,找到 ocx 的来源(开发者),确定版本号,编写 ocx 时,代码中会有 ocx 对应的版本号。这里的版本信息必须和 OCX 的版本信息一致。

RegisterServer=yes 表示下载下来后自动注册此 ocx 。

  其他的 dll 文件的代码中都没有这一句,意思是 dll 下载下来后不需要注册。

3.对 INF 文件中其他dll的FileVersion部分进行解释

   表示 dll 的版本号,如何确定 dll 版本号? 找到对应的 dll 右击,查看属性,这里的文件版本,就是我们需要的版本号,注意,不是产品版本。

 

打包CAB

  1. 使用iexpress生成cab文件
  • 打开运行,输入iexpress,或者在cmd中输入iexpress回车,打开iexpress压缩程序
  • 进行相关选项勾选

        

         

        

add选择inf文件,依赖库文件以及ocx文件

         

        

        

 

Html文件制作

  • 在cab所在文件夹下新建文本文档(.txt),将后缀改成(.html),名字任意
  • 使用notepad++打开,进行编辑,内容如下所示:

         

 

  • 此classid就是之前inf中的classid,codebase为打包成的cab名字,version为发行版本
  • 将html文件与cab文件放在对应网站的服务器文件夹下即可

IE无法加载Ocx的解决方法

1.打开使用ie打开对应html如下显示

        

 打开ie的设置,选择Internet选项

 

 

 

 

 

2.打开使用ie打开对应html,显示已阻止cab安装

  • 解决办法:关闭防火墙和杀毒软件

3.打开浏览器,并未弹出任何提示,但界面并未加载

  • 打开设置-管理加载项,显示已经加载此控件,解决办法:在代码中将对应控件构造函数最后添加this->show();

如图所示

 

  • 打开设置-管理加载项,没有显示此控件,可能原因:模块与正在运行的windows版本不兼容,确认方法:查找注册表,如果没有,打开cmd,输入regsvr32 控件名,回车.如下图显示

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值