• ActiveX开发(三)


    ActiveX插件如果想在Html中进行引用,必须先对插件ocx文件进行注册,即通过regsvr32将该控件注册到用户的操作系统里。在实际应用中,一般有两种方式来达到这个目的:

          一、通过安装程序注册ActiveX

          这种方式非常直观,就是制作一个简单的安装程序,该安装程序的任务就是将打包的ocx文件及其依赖文件解压复制到系统目标位置,然后再通过执行regsvr32命令将已复制到用户机器目标位置的ocx文件注册到系统中。当web页面中需要调用相应的ActiveX时,将在显著位置提示用户需下载指定的程序并运行安装。

           实际很多应用程序在安装时都隐含地向系统注册了一些ActiveX的,例如QQ、飞信、播放器等,这样相应的web就更加灵活。不过,并不是所有的ActiveX插件都是以ocx文件呈现的,也可以是dll文件。

          二、通过cab包由IE自动注册

           能否在web页面需要引用ActiveX时由IE自动下载对应的插件并自动安装呢?当然可以。我们要做的就是要将ocx及其他文件打包成一个cab文件,然后将该cab文件放在web服务器上,并在web页面中通过<object …..  codebase=”xxx.cab#version=1,0,0,1” />的方式进行调用。

           cab实际上是微软规定的一个特殊格式的压缩文件,制作cab包过程很简单:

           1、 准备cabarc.exe工具,该工具可以在这里下载,也可以从微软下载

           2、 将ocx文件及依赖的其他文件放到同一个目录下,并在该目录下创建一个后缀为.inf的文件(文件名可任意取,一般与ocx文件同名,例如MyTestActiveX.inf),文件内容如下:

    复制代码
    [version]    
    signature="$CHICAGO$"    
    AdvancedINF=2.0    
      
    [Add.Code]    
    MyTestActiveX.ocx=MyTestActiveX.ocx
    mwhrf_bj.dll = mwhrf_bj.dll
      
    [MyTestActiveX.ocx]    
    file=thiscab    
    clsid={1345C26B-E979-45A5-997D-9427FB81E707}   
    FileVersion=1,0,0,1    
    RegisterServer=yes    
    DestDir=11 
    
    [mwhrf_bj.dll]    
    file=thiscab
    FileVersion=1,0,0,0
    DestDir=10
    复制代码

          a) signature="$CHICAGO$"表示这个.INF文件和Windows95或其后版本和Windows NT 4.0或其后的版本兼容。

          b) [Add.Code]下面的内容用于定义该cab需要下载的各文件对应的定义区块,左边为文件名,等号右边为定义区域名,一般为易读均将定义的区域名与文件名相同。

          c) 各文件的定义区域分别定义了该文件的各种属性:

              file:表示该文件的获取位置,此处thiscab表示该文件就包含在该cab中;如果在其他位置而不在cab包中,则可以写上具体的位置如http://xxx.xxx.xxx/xx/mwhrf_bj.dll

              clsid: 只有需要注册的ocx文件才设置这个属性,他的值就是改ocx的唯一classid,可以从项目的.idl文件中最下方查找;

                             image

               FileVersion:文件版本号。一般将ocx文件的版本号视同为整个cab的版本号,在<object codebase=”xx.cab#version=1,0,0,1”中将用到该版本号

                DestDir:该文件需要COPY到目标机器的位置,11表示system32目录下,10表示windows目录下,……

          有关inf文件的具体内容可参考以下文章相关部分,已经非常详细了:

                 OCX控件CAB打包手册及升级方法

                 INF文件的语法解说

                 创建 CAB 文件

                 VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

           3、运行如下命令进行打包:

                 cabarc" -s 6144 N "xxxxxx.cab" "xxxxx.ocx" "mwhrf_bj.dll" "xxxxxx.inf"

          其中凡是需要打包的文件均要一一列出,inf文件放在最后(未测试是否必须最后)。文件路径均可以是绝对路径或相对路径,不一定非得是相同文件夹下。

           命令执行后将自动生成.cab文件。


    =======================================================================
    野文(Jasson Qian)
    ------------------------------------------------------
    博客园:http://qguohog.cnblogs.com
    CSDN:http://blog.csdn.net/sallay
     
    分类: Web开发C&C++
    标签: ActiveXCOM插件cab打包
  • 相关阅读:
    【理财启蒙】理财:需要树立正确的金钱观
    【系统设计】分布式唯一ID生成方案总结
    【Hash一致性算法】什么是Hash一致性算法
    【位图算法】什么是BitMap
    关于枚举类你可能不知道的事
    【数据结构】什么是AVL树
    mysql5.6 主从同步配置
    vmstat命令详解
    pstack跟踪进程栈
    iostat 磁盘io分析工具
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2875733.html
Copyright © 2020-2023  润新知