一个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 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...
随机推荐
- LPC-LINK 2 LPC4370 简化线路图
- maria-developers 开发者邮件
https://lists.launchpad.net/maria-developers/
- 液晶电视插有线电视信号线的是哪个接口 HDMI是什么接口
1.液晶电视插有线电视信号线的接口(模拟信号)是射频接口(也叫RF接口,同轴电缆接口,闭路线接口),数字信号就得通过机顶盒转换成模拟信号视频输出至电视,才能正常收看电视节目. 2.电视机或高清机顶盒上 ...
- 使用Axure RP原型设计实践05,了解公式
本篇体验公式的使用,一般出现值的时候就可以使用公式,公式可以使用全局变量也可以使用局部变量,在Axure中使用公司有一定的语法. 先创建2个全局变量. 向页面中拖入Rectangle部件,给它的OnC ...
- 在Visual Studio中使用层关系图描述系统架构、技术栈
当需要描述项目的架构或技术栈的时候,可以考虑使用层关系图. 在解决方案下添加一个名称为"TailspinToys.DesignModel"的建模项目. 在新建的建模项目下添加一个名 ...
- Java进程线程理解
一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存在,它必须是进程的一部分.一个进程一直运行,直到所有的非守护线程都结束运行后才能结束. 多线程能满足程序员编写高效率的程序 ...
- ios之快速枚举
for(UIView * subView in self.view.subviews) { if([subView isKindOfClass:[XYZSeniorQueryView class]]) ...
- vs已停止工作
第一步: 开始-->所有程序-->Microsoft Visual Studio 2012-->VisualStudio Tools-->VS2012 开发人员命令提示(以管理 ...
- python测试开发django-17.admin后台管理
前言 通常一个网站开发,需要有个后台管理功能,比如用后台管理发布文章,添加用户之类的操作.django的admin后台管理主要可以实现以下功能 基于admin模块,可以实现类似数据库客户端的功能,对数 ...
- iOS酷炫动画效果合集
iOS酷炫动画效果合集 源码地址 https://github.com/YouXianMing/Animations 效果绝对酷炫,包含了多种多样的动画类型,如POP.Easing.粒子效果等等,虽然 ...