一个ActiveX control的创建过程

  1. 创建

    根据这篇文章的介绍:http://www.cnblogs.com/time-is-life/p/6354152.html 来创建,里面包含了创建的基本过程以及属性事件方法的使用。

  2. 使用:

    参考文章中建议使用ActiveX Control Pad,这个工具确实很好用,能够自动生成带有Active x控件的网页,而且可以直接设计和配置参数。但是这个工具只在老的32位系统可以使用,我试了Windows server 2008 32位系统,装不上,其他的64位系统也装不上。最后在一台XP的机器上装上了。

    如果不使用ActiveX Control Pad, 那就只能自己写HTML中的Object标签,类似下面的代码:


<OBJECT id="myactivex1" width=500 height=300 CLASSID="clsid:9373B934-C98F-418E-AA75-5D19469D70DC" CODEBASE="MyActiveX.ocx#version=1.0.0.1"></OBJECT>

?

这里的CLASSID取值不能取错。如下图所示,应该取的是IDL文件中COCLASS的UUID,而不是LIBRARY的UUID。我刚开始的时候弄错了,很久也没有找到原因,最后对比ActiveX Control Pad生成的代码才发现问题所在。

?

另外对于OBJECT标签中的 CODEBASE属性,这个属性所指的路径是供客户端IE下载OCX文件的所在,如果OCX和当前网页在同一个路径下,就不用指定路径,直接写OCX文件名和版本信息即可。如果不在同一个路径,甚至不在同一个网站,则需要带上OCX的完整网址。

对于客户端IE的设置,需要在安全设置中指定允许下载和运行此控件(如果该OCX控件已经签名了,一般不需要额外的配置,如果没有签名,则需要设置允许运行未签名的OCX控件。)。另外对于IE的安全性设置,有一个需要注意的问题,如果将该站点加入到了信任站点,那么只有对于信任站点的安全性设置才对该网站起作用,Internet和Intranet的设置不会对该站点起作用。

  1. 打包:

    Cabarc 的语法在这里:https://technet.microsoft.com/en-us/library/cc728406(v=ws.10).aspx

  2. 签名。

    为了使IE将该控件识别为安全的空间,需要进行签名,关于签名的描述如下:


To create a signed ActiveX control, you must purchase a Code Signing Certificate from one of the certificate providers such as Thawte, Verisign, or GeoTrust. With this service, they will verify your identity and provide you certificate files you use to sign the ActiveX application. I chose Thawte for a Code Signing Certificate, who provided two files for signing the application,?mycert.spc?and?mykey.pvk.

To sign the ActiveX application, we package the components of the application into a CAB file, which is downloaded from the web site and the ActiveX control is installed on the system.(cab包的创建过程见参考文章)

To sign the CAB file you created, you need the?signcode.exe?tool from Microsoft MSDN. Refer to the "Signing and Checking with Authenticode" reference at the end of this article. You use the?signcode?tool with the certificate files you obtained from purchasing a Coding Signing Certificate to sign the CAB file. The following is an example use of?signcode?to sign?myactivex.cab:

signcode -n "myactivex" -i
   http://www.myactivex.com -spc mycert.spc -v mykey.pvk -t
   <A href="http://timestamp.verisign.com/scripts/timstamp.dll%20myactivex.cab" target=_blank>http://timestamp.verisign.com/scripts/timstamp.dll myactivex.cab</A>

In the above example,?http://www.myactivex.com?should be replaced with a web page that provides users further information about your signed ActiveX control.

?

  1. 升级。

    如果更改了ocx控件的代码,比如新增加了属性方法事件等,由于原有的用户已经通过codebase下载并且注册了ocx控件,即使在服务器上放了新的ocx控件,但是原有用户的浏览器并不会重新下载并且注册ocx控件。怎么办那?

    解决方法就是增加ocx文件的版本号,这样原有用户的浏览器发现ocx的版本增加了,就会自动下载并且更新ocx控件,这样新的代码更改就能应用到用户的机器上了。

    Ocx文件版本的修改流程如下:

    1. 资源文件中有Version一项,在里面修改版本,修改小版本即可。

      注意里面有好几处版本号,都需要修改。

    1. 重新编译项目,确认生成ocx的文件版本发现了变化。

    2. 修改inf文件中的版本号。

    3. 将inf和ocx文件拷贝到同一目录,然后用CABARC工具重新生成cab包。
    4. 将新的cab包拷贝到web服务器目录下,然后更改HTML代码中的CODEBASE中的CAB包版本号。

<OBJECT id="MyActiveX1" width=500 height=300 CLASSID="clsid:9373B934-C98F-418E-AA75-5D19469D70DC" CODEBASE="MyActiveX.cab#version=1,0,0,2">

尤其需要注意的是版本号是用逗号分隔的,而不是用点分隔的。

?

执行完上述步骤后,用户再次打开网页的时候,ocx控件会被重新下载和注册以升级到新版。如果执行的时候发现最新版的某些功能没有上去,重新打开一个 IE浏览器就可以了。

时间: 2024-10-05 20:56:47

一个ActiveX control的创建过程的相关文章

Android Context创建过程

    特定的资源或者类构成了Android应用程序的运行上下文环境 PackageManager, ClassLoader, Assert等等 Android应用程序窗口的运行上下文环境是通过ContextImpl类来描述的,即每一个Activity组件都关联有一个ContextImpl对象.ContextImpl类继承了Context类,它与Activity组件的关系如图 这个类图在设计模式里面就可以称为装饰模式 Activity组件以后就可以通过这个ContextImpl对象来执行一些具体

深入理解Java对象的创建过程:类的初始化与实例化

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java对象的创建过程:类的初始化与实例化 - Rico's Blogs - 博客频道 - CSDN.NET Rico's Blogs 潜心修炼,成为一个更好的人. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅

(转)深入理解Java对象的创建过程

参考来源:http://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化.在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化.本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机

Java 对象的创建过程

类的初始化与实例化一个 Java 对象的创建过程往往包括类的初始化 和 实例化 两个阶段.Java 规范规定一个对象在可以被使用之前必须要被正确地初始化.在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化.在实例化一个对象时,JVM 首先会检查相关类型是否已经加载并初始化,如果没有,则 JVM 立即进行加载并调用类构造器完成类的初始化.Java 对象的创建方式一个对象在可以被使用之前必须要被正确地实例化.在 Java 程序中,有多种方法可以创建对象,最直接的一种就是使用 new 关

sql学习笔记(18)-----------数据库创建过程

手动创建数据库的步骤: 第一步:决定数据库实例的SID 数据库实例的SID用来将当前实例和以后可能创建的实例进行区分 % setenv ORACLE_SID mynewdb 第二步:建立数据库管理员认证方法 第三步:创建初始化參数文件 实例(由内存结构SAG和后台进程组成)启动过程中要读取初始化參数文件.得到初始化參数文件的一个好办法是改动一个已有的初始化參数文件.为了简化操作,将初始化參数文件放在Oracle默认的位置上.这种话.当数据库启动时,就没有必要再指定pfile參数了.由于Oracl

Linux进程创建过程

相关学习资料 linux内核设计与实现+原书第3版.pdf(3.3章) 深入linux内核架构(中文版).pdf 深入理解linux内核中文第三版.pdf <独辟蹊径品内核Linux内核源代码导读> http://www.yanyulin.info/pages/2013/11/linux0.html http://blog.csdn.net/ddna/article/details/4958058 http://www.cnblogs.com/coolgestar02/archive/2010

图解java对象的创建过程

前面几篇博文分别介绍了JAVA的Class文件格式.JVM的类加载机制和JVM的内存模型,这里就索性把java对象的创建过程一并说完,这样java对象的整个创建过程就基本上说明白了(当然你要有基础才能真正看明白).经常有人问我为什么这么喜欢钻研底层的东西,首先,因为我以前的做硬件的和嵌入式的,兴趣使然:其次,我个人感觉,如果不把上下打通,心里老是有一堵墙过不去,说白了,这是个人因素,与好坏无关(当然,经常有人说,懂底层原理是成为高手的必经之路). 现在来说一下我当初学习JVM的原因,在学习JAV

THEOS的第一个TWeak的成功创建

THEOS的第一个TWeak的成功创建html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { overflow-y: hidden; overflow-x: auto; } .CodeMirror-lines { padding: 4px 0px; } .CodeMirror pre { padding: 0px 4px; } .CodeMirror-scroll

oracle link的创建过程

下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被链接的库为DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 RAC)第一部分:如何创建dblinkdblink的创建有两种方式:1.在本地数据库tnsnames.ora文件中配置要访问的目标数据库信息create [public] database link test_link2connect to scott identified by tiger us