OCX 打包 CAB 与 JS 调用详细教程

    最近在做一个 WEB 项目,需要调用 OCX 进行连接读卡器读卡。本来并不想用 OCX 技术,因为 ActiveX 技术是微软出品,这样就导致整个系统只能使用 IE 浏览器(其他浏览器可以通过插件的形式支持 OCX 的调用)。但尝试了很多方法调用客户端 DLL 发现都走不通。最后无奈之下,才打算研究 OCX 技术。
    网上都说 ActiveX 技术很麻烦,会出现各种错误,不做的时候不知道,真正需要研究时候,才发现确实如此。主要问题是,报错和问题的真正原因没有关系或者说关系不大,甚至很多时候没有报错,只有不断尝试。
    言归正传,下面来讲一下如何搞定 OCX。
    首先先声明,本教程只关于 OCX 打包 CAB 和 JS 调用 OCX,这里不探讨如何通过 C++ 写 OCX。因为本人只做 Java 开发,对于C++ 并没有研究。
    开发系统:win8.1 64位
    测试通过系统:win7 64 位、win8.1 64位、xp 32位

  OCX 和 CAB 的关系。

    大家知道,得到 OCX 之后,如果想要调用,首先要注册。在不注册的情况下,没办法调用 OCX 。
    最简单的注册办法是手动注册。手动注册需要在命令行操作。对于开发人员来说,多多少少要和命令行打交道,可能没有问题,不过对于使用我们系统的客户来说,让他进行命令行操作的确不合适。不管我们文档写得多么详细,对客户来说这都是不友好的,而且手动注册也设计到安全性问题。所以就需要在客户不知情的情况下自动对 OCX 注册。这也就是 CAB 的作用。

    手动注册 OCX

    我们假设,OCX 所在的目录是:D:/ocx/xpbutton/xpbutton.ocx
 
   
     通过 regsvr32 xpbutton.ocx ,这样我们就手动注册了 OCX。
     如果想卸载 OCX,我们可以反注册:regsvr32 /u xpbutton.ocx 。
       注册和卸载,我们都需要以管理员身份运行 cmd 控制台。-- 这里特别需要注意!
     如果在注册时候出现下面的错误:
 
   
     1.首先查看是否以管理员身份运行 CMD。
     2.如果还是不行,可以考虑将相应的 OCX 放到系统目录下     
          a). 32 位系统放到 C:\Windows\System32
          b). 64 位系统放到 C:\Windows\SysWOW64
     3.如果还是报错,那可以确定是缺少 DLL 导致的。各位可以下载一个工具: Dependency Walker。
     看 这里的教程,看少了哪些 DLL,去网上下载这些 DLL, 这些 DLL 就是你必须要和 OCX 一起打包到 CAB 压缩包里面去的。因为你自己电脑少了,说明客户电脑也同样可能会少这些 DLL。
     这里需要注意的是:首选的是和你系统相同位数的 DLL,肯定不会错,实在找不到 64 位的,才考虑 32 位的版本。
     下载了 DLL 后,将 DLL 存放到上面第二步提到的系统文件夹下面,然后再注册。

     OCX 打包 CAB

     首先下载 OCX 打包签名工具: ocx 打包签名工具 ,  访问密码 ddb4。



     将需要签名和打包的 OCX 和命令放到相同文件夹。

     制作签名证书:

          在命令行运行下面命令:
         1. 执行命令:
makecert.exe -ss xpbutton -n "CN=这里随便" -sv .\xpbutton.pvk -r .\xpbutton.cer


 
        输入三次,密码,查看控制台出现 Succeeded 表示成功。
 

        此时生成文件:xpbutton.cert 和 xpbutton.pvk
 

         2. 运行命令:
Cert2Spc.exe .\xpbutton.cer .\xpbutton.spc

          查看控制台,出现 Succeeded 表示成功。
 

         此时会生成文件:xpbutton.spc


         两条命令结束,我们一共得到三个文件:xpbutton.cer、xpbutton.pvk、xpbutton.spc
 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值