博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OCX转CAB
阅读量:6514 次
发布时间:2019-06-24

本文共 1617 字,大约阅读时间需要 5 分钟。

hot3.png

 

OCX转成CAB

 

最近有个项目,用到这项内容。折腾了很长时间,总算是搞定了。

原理是这样的:IE上安装OCX控件,控件调用动态库,然后动态库来操作POS机进行交易。动态库以及配置文件放置的位置由OCX中来确定。我们的OCX是到当前宿主程序下去读,这里也就是IE所在的目录。需要注意的是,64位系统应该将配置文件及动态库放置在Program Files (x86)下的宿主程序目录,因为插件的开发环境是在32位系统下。如果仅仅是OCX文件,那么安装的话就需要手动进行注册。转换成CAB的好处就是,浏览器打开网页后,会自动检测这个插件,然后提示安装。那么这个安装过程就完全自动化了。

在啰嗦一句,最上层是通过JavaScript来调用控件中的函数。

那么,我们的重点就在于将OCX转成CAB

第一步,写一个.inf文件,这里我们命名MakeCAB.inf,文件内容如下:

[version] signature="$CHINA$"  AdvancedINF=1.0[Add.Code]trans.ocx=trans.ocx[trans.ocx]file-win32-x86=thiscabclsid={37E957C6-82B4-48AA-8C68-BE926A3589A3}    FileVersion=1,0,0,1   RegisterServer=yes

需要说明的是,clsid应该是控件生成的时候就已经有了。[Add.Code]下面就是添加要打包的文件,可能还包含一些dll文件等,这里我们只有一个控件文件。如果还包含dll文件的话,那么后面还需要继续添加对dll文件的说明。这里给出一个大致的例子:

第二步,通过命令

cabarc.exe -s 6144 N E:\OCX\trans.cab MakeCAB.inf E:\OCX\trans.ocx

生成一个CAB文件。

第三步,制作数字证书。通过命令:

makecert /sv "chinaums.PVK" /n "CN=chinaums.com" chinaums.cer

,过程中需要多次输入密码,我也不知道如果前两次的输入不一致会怎样,我这里输入的密码都是一样的。这样就会生成两个文件,一个是chinaums.cer数字证书文件,另一个chinaums.PVK是私钥文件。

第四步,给CAB进行数字签名。运行signcode.exe,按照提示一部一部操作:

 

最后一步需要注意,如果按照默认的话可能会报错,我们这里选择第三项。然后继续往后走,就可以成功的对CAB进行数字签名。

服务端的html文件中添加如下代码:

clsid按照自己的来。Version也按照自己的配置文件来,CAB名字也一样,该成自己的名字。JavaScript调用示例如下:

       function doQD(){              var trans=document.getElementById("trans");              var wsh=trans.DoICBCZJMisTranSTD("4001","","","","");              alert(wsh);       }

然后将CAB文件放在和这个html同目录下,启动服务,IE打开就会提示你自动安装。但是,由于这里的证书是自己做的,肯定不会被IE信任,那么这就需要对浏览器做一定的设置。进入IEInternet选项,如下,注意打钩的选项卡:

这样就算完成了。看控件是否安装成功,运行regedit命令,然后编辑à查找,输入您的clsid进行查找,如果能查找到就说明控件注册成功。

话说回来,这种过时的技术,就没有必要在深入的折腾了,能用就行了,唉,蛋疼死了。

 

转载于:https://my.oschina.net/u/2245029/blog/423573

你可能感兴趣的文章
pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
查看>>
NodeJS学习之文件操作
查看>>
AJAX的get和post请求原生编写方法
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
Python自学笔记-logging模块详解
查看>>
Head First--设计模式
查看>>
iOS之CAGradientLayer属性简介和使用
查看>>
微信小程序UI组件、开发框架、实用库
查看>>
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>
正则之从dom字符串中提取url
查看>>
大数据——基础概念
查看>>
机器学习温和指南
查看>>
解决Geoserver请求跨域的几种思路,第二种思路用过
查看>>
最短路-Bellman-Ford算法
查看>>
Object 类有哪些方法
查看>>
oracle 将一个表复制到另外一个表里 .
查看>>
libcurl以get方式请求服务器端文件
查看>>
OpenJudge 2786 Pell数列
查看>>