一个ActiveX control的创建过程
- 创建
根据这篇文章的介绍:http://www.cnblogs.com/time-is-life/p/6354152.html 来创建,里面包含了创建的基本过程以及属性事件方法的使用。
- 使用:
参考文章中建议使用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的设置不会对该站点起作用。

- 打包:
Cabarc 的语法在这里:https://technet.microsoft.com/en-us/library/cc728406(v=ws.10).aspx
- 签名。
为了使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:
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. |
- 升级。
如果更改了ocx控件的代码,比如新增加了属性方法事件等,由于原有的用户已经通过codebase下载并且注册了ocx控件,即使在服务器上放了新的ocx控件,但是原有用户的浏览器并不会重新下载并且注册ocx控件。怎么办那?
解决方法就是增加ocx文件的版本号,这样原有用户的浏览器发现ocx的版本增加了,就会自动下载并且更新ocx控件,这样新的代码更改就能应用到用户的机器上了。
Ocx文件版本的修改流程如下:
- 资源文件中有Version一项,在里面修改版本,修改小版本即可。
注意里面有好几处版本号,都需要修改。

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

- 修改inf文件中的版本号。

- 将inf和ocx文件拷贝到同一目录,然后用CABARC工具重新生成cab包。
- 将新的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浏览器就可以了。
一个ActiveX control的创建过程的更多相关文章
- Android Context创建过程
特定的资源或者类构成了Android应用程序的运行上下文环境 PackageManager, ClassLoader, Assert等等 Android应用程序窗口的运行上下文环境是通过Con ...
- 深入理解Java对象的创建过程:类的初始化与实例化
摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类 ...
- (转)深入理解Java对象的创建过程
参考来源:http://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一 ...
- [ActiveX]使用VS2010创建MFC ActiveX工程项目
ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能队列运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括web网页,应用程序窗体等等. ActiveX控 ...
- VB.NET或C#报错:You must hava a license to use this ActiveX control.
VB.NET或者C# winform开发时,如果使用了Microsoft Visual Basic 6.0 ActiveX,并动态创建该控件实例,那么程序移植到没有安装Visual Basic 6.0 ...
- 要使用C#实现一个ActiveX控件
要使用C#实现一个ActiveX控件,需要解决三个问题: 1.使.NET组件能够被COM调用 2.在客户机上注册后,ActiveX控件能通过IE的安全认证 3.未在客户机上注册时,安装包能通过IE的签 ...
- sql学习笔记(18)-----------数据库创建过程
手动创建数据库的步骤: 第一步:决定数据库实例的SID 数据库实例的SID用来将当前实例和以后可能创建的实例进行区分 % setenv ORACLE_SID mynewdb 第二步:建立数 ...
- JVM系列(三):JVM创建过程解析
上两篇中梳理了整个java启动过程中,jvm大致是如何运行的.即厘清了我们认为的jvm的启动过程.但那里面仅为一些大致的东西,比如参数解析,验证,dll加载等等.把最核心的loadJavaVM()交给 ...
- ASP.NET Web API 控制器创建过程(二)
ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...
随机推荐
- 12174 - Shuffle
这道题能够用"滑动窗体"的思想来做,假想一个滑动的窗体,这个窗体的大小是s.划过一个大小为n的区域,可是由于s可能比n大,所以我们最好还是不去考虑s和n的大小,直接开出一个足够大的 ...
- C程序设计的抽象思维-递归过程-砝码称重
[问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...
- Delphi来实现一个IP地址输入控件
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- 利用Ffmpeg获得flv视频缩略图和视频时间的代码
问题描述:获得flv视频的缩略图和视频时间长度 谷歌了半天发现可以使用Ffmpeg获得视频的一些信息,先介绍一下FFMEPG 这里简单说一下:FFmpeg是用于录制.转换和流化音频和视频的完整解决方案 ...
- android iOS 编码问题害死人!
android 与后端服务器进行通信时,默认使用的编码格式是asi. 而iOS与后端通信时,获取的数据到iOS端默认被utf-8进行编码.所以,我们常常出现android能够从服务器端获取到数据,但是 ...
- iOS App与iTunes文件传输的方法和对iOS App文件结构的说明
转:http://www.xiaoyaoli.com/?p=368 就像很多iOS上面的播放器App一样,本文编写一个程序可以通过iTunes往里面放文件,比如编写一个音乐播放器程序,通过itune往 ...
- 利用WebSocket传输数组或者Blob的方案
最近在利用Html5的WebSocket进行即时通讯,一点小心得,大家一起讨论吧 首先把WebSocket的协议网址和WebSocket API网址给大家: 协议:http://tools.ietf. ...
- 疑犯追踪第一季/全集Person Of Interest迅雷下载
本季Person of Interest Season 1 第一季(2011)看点:如今,<疑犯追踪>正在纽约热拍,在11月1日的片场,刚刚完成了一场爆炸的戏.另外,<探索者传说第一 ...
- Android 常用的数据加密方式
前言 Android 很多场合需要使用到数据加密,比如:本地登录密码加密,网络传输数据加密,等.在android 中一般的加密方式有如下: 亦或加密 AES加密 RSA非对称加密 当然还有其他的方式, ...
- Javascrip获取页面URL信息
使用Javascript可以方便获得页面的参数信息,常用的几种如下: 设置或获取对象指定的文件名或路径 window.location.pathname 设置或获取整个 URL 为字符串 wind ...