ActiveX组件及其注册一.概述
在接下来的部分,首先将就ActiveX组件的概念以及它的分类进行简要的介绍,从而让读者对ActiveX组件有一个概念上的把握。随后,将就如何注册ActiveX组件的问题进行比较深入详细的解释。分别给出ActiveX 控件、ActiveX DLL、ActiveX EXE的具体注册方法。并在此基础上,对如何在制作安装程序并安装后,实现对 ActiveX组件的注册给出了若干解决方案。
二.ActiveX组件的概念
在我们平常的阅读和编程学习中,我们经常可以看到诸如“ActiveX控件”,“ActiveX组件”等名词。那么什么是“ActiveX控件”,什么是“ActiveX组件”呢,它们有什么区别呢?
首先,我们应该知道,组件是建立在 ActiveX技术上的代码的独立单元,用于通过特定的接口提供特定的一组服务。它提供客户端在运行时所请求的对象。在 Remote Data Service 中,当组件包括支持业务进程的关键字逻辑时也被称为“业务对象”。
其次,ActiveX是使软件组件能够在网络环境中交互作用而与创建组件的语言无关的一套封
装技术。实现ActiveX 的基础是“组件对象模型”(Component Object Model ,缩写为COM)。它也是提供封装 COM组件并将其置入应用程序(如(但不限于)Web 浏览器)的一种方法。
最后,上面一段话中提到的COM(Components Object Model)是软件组件互相通讯的一种方式。它是一种二进制和网络标准,允许任意两个组件互相通讯,而不管它们是在什么计算机上运行(只要计算机是相连的),不管各计算机运行的是什么操作系统(只要该操作系统支持 COM),也不管该组件是用什么语言编写的。COM 还提供了位置透明性:在编写组件时,其他组件是进程内 DLL、本地 EXE 还是位于其他计算机上的组件,都不会产生太大影响。
这样以来,我们可以给ActiveX组件(ActiveX component)一个定义,就是:一个应用程序或开发工具,可以使用另一个应用程序支持的对象,或者提供自己的对象供另一个应用程序使用。以前这些程序和对象称为“OLE 自动服务程序”和“OLE 自动服务器”。
至于ActiveX控件,则只是ActiveX组件的一个分类,是一个标准的用户接口元素,是具有 .OCX 文件扩展名或者可插入对象的文件,能够快速地把窗体和对话框组装起来;当使用
自定义控件对话框将其增加到工程中去时,工具箱将被扩展。在以前ActiveX控件被称作 OLE 控件。ActiveX 控件还使 Internet 更加生动,为 World Wide Web 页增加了有趣的新功能。
三.ActiveX组件的分类
ActiveX组件可以分为三类:
● ActiveX控件
● ActiveX文档
● 代码成分(OLE自动服务器)
浏览器的activex控件 (1)ActiveX控件
可以从无到有被用户完全建立,它能被建立在另一个控件之上,或者它可容纳多个已经有的控件。比如 VB中的ActiveX控件就是建立在VB的用户控件对象上的。当创建一个ActiveX控件时,就创建了一个带有扩展名为 .ctl 的控件类文件。我们通常使用这种文件来
创建实际的控件,其扩展名为 .ocx 。
(2)ActiveX文档
通常,在具体的编程环境如VB 、VC++中,可以用传统文档的语义学来创建完全的应用程序。换句话说,它不仅有应用程序的功能,而且还有文档性能的灵活性 — 当用户打开一个 ActiveX文档时,将不仅拥有应用程序的全部功能,而且能保持和发布应用程序原有数据的“备份”,因而,“文档”实际上是主动的。比如, VB的ActiveX文档是建立在VB用户文档的基础上的。创建一个ActiveX文档时,用带有扩展名 .dob 的文件保存。VB使用这种DOB文件来创建EXE或DLL文件,这种EXE或DLL文件可以为ActiveX文挡提供实际的代码。另外VB生成一个带扩展名 .vbd 的说明文件,它对ActiveX文档进行描述,用主应用程序可以打开这个文件。对于ActiveX文档,可以让用户保存数据,这些数据被存在VBD文件里。
(3)代码成分
以前被称作OLE自动服务器。这些对象可以让用户在其他程序里使用其代码。比如,有一个陈列在代码成分里的时钟例程,这样以来此例程可以被其他程序使用。代码成分(ActiveX EXE, ActiveX DLL)能够支持属性与方法。
四.建立ActiveX组件的选择
ActiveX组件的各个内容,它们的应用是不同的。那么如何进行选择,以来确定究竟该创建那种组件呢?
首先,在这里我们务必弄清楚ActiveX组件的运行方式,并知道相应的特点。一般来说,ActiveX组件有两种运行方式:它们是进程外服务器运行和进程内服务器运行。
如果把一个ActiveX组件作为一个可执行文件(EXE文件)的一部分,那么它就是一个进程外服务器并在自己的进程内运行。若把它作为一个动态链接库(DLL文件)的一部分,则它是一个进程内服务器并作为客户应用程序在统一进程里运行。若用户的ActiveX组件是一个进程外服务器,他就是一个可以单独运行的EXE文件。使用进程内服务器的应用程序通常比使用进程外服务器的应用程序运行速度快,因为应用程序没有通过进程边界去使用对象属性,方法与事件。
如果将建立的ActiveX文档作为一个进程内组件(DLL文件),进程内组件的性能超过同样编译成EXE的组件。另外,如果多个程序访问同一个EXE文件,将会覆盖全局数据;如果他们都有自己的进程内服务器,这种事情不会发生。
客户应用程序和内进程组件共享相同的内存空间,所以在调试内进程代码部件的方法时,可以用客户应用程序的堆栈输参数。而对于外进程组件来说,在调试代码部件的过程中,方法的参数必须被移动来通过两个进程间的内存界线,这被称为marshaling。
这样,我们可以得出如下关于如何选择所创建组件类型的结论:
(1)若想建立一个在可调用的代码中提供例程的不可视组件,可以建立一个代码组件(ActiveX EXE 或AtiveX DLL).
(2)若想建立一个能在同一个进程中与应用程序运行的组件, 可以建立一个AtiveX DLL.
(3)若想建立一个能服务多个应用程序又能在一台远程计算机上运行的组件,可以建立一个AtiveX EXE。
(4)若想建立一个可视组件,并在设计时能被拖动到一个应用程序中,可建立一个AtiveX 控件。
(5)若想建立一个可视组件,并在运行时能接受一个应用程序窗口,可建立一个ActiveX 文档。
至于创建组件之后,如何编程,如何被使用,可以参照有关编程方面的书籍。在这里,我们假设ActiveX组件的设计已经完成,然后对ActiveX组件的注册进行较为详细的讨论。
五.ActiveX组件注册的几种方法
不同的ActiveX组件,它们注册有着不同的方法,现在就针对ActiveX控件、ActiveX DLL 、ActiveX EXE三种不同的组件分别给出解决方案。
1.ActiveX控件的注册
ActiveX 控件与开发平台无关,在一种编程语言中开发出来的ActiveX 控件,几乎不作任何修改,便可以在另一种编程语言中使用。但是ActiveX 控件被开发出来以后,要想在Windows中被正确使用,首先必须将控件文件复制到硬盘中,然后在Windows中进行注册。未在Windows中注册过的ActiveX 控件是不能被使用的。一般注册VB6.0 ActiveX 控件的方法有如下几种:
(1)使用 程序对VB ActiveX 控件进行注册。 该文件位于Windows目录的system子目录下。使用方法如下:点击“开始”,在弹出的菜单中再点击“运行”,在出现的对
话框中输入以下命令:
<控件路径和ActiveX 控件文件名> 注册一个ActiveX 控件。此处 regsvr32的路径名可以省略。而且一般可将被注册的ActiveX 控件拷贝到\windows\system下,这样我们也不用在注册时输入控件的路径了。
如果想要解除对某一个ActiveX 控件的注册,只需要在regsvr32后面加一个参数“/u”,即 <被注册过的ActiveX 控件文件名> 。
(2)利用某些编程环境中的浏览功能。比如在VB6.0中可以点击界面上的“工程”,在弹出的下拉菜单中,点击“部件”一项,随后出现了一个新的界面。在此界面上利用“浏览”按钮,到并选中需要注册的控件,确定后便注册到“部件”界面的“控件”栏里。
利用上面两种方法进行控件注册后,便可以让部件开发人员在实际的编程中,使用该控件了。
(3)使用安装程序制作软件——InstallShield 。使用 程序来注册ActiveX 控件,以及利用“浏览”来注册,虽然简单,但是都需要手工注册,在不用时,还需要手工解
除,所以对于一个使用了该控件的应用程序来说并不实用。一般大型的应用软件都需要一个安装程序,在安装程序中解决ActiveX 控件注册就非常实用了。使用InstallShield可以制作出专业级的安装程序,还可以注册其中的ActiveX 控件;而且卸载软件时,可以自动注销以前注册的ActiveX 控件。其做法就是按照InstallShield 的向导,进行安装程序的制作,在进行到最后一步,点击“Finish”后,“InstallShield”将进行下一步的“详细定制”。选择“File Groups”选项,将其中包含需要自注册ActiveX控件文件项的“Self-Registered”属性改为“yes”.
(4)安装过程中的自注册。 ActiveX控件在安装的时候必须被注册,方可以在应用程序中被调用。往往利用编程工具自带的安装制作工具可以达到这个目的。仍以VB6.0为例。利用VB6.0本身自带的创建安装程序的工具软件:Package & Deployment Wizard。只要将ActiveX控件包含在发布的文件中间,Package & Deployment Wizard将根据需要自动将该控件打成自注册文件的属性。万一,我们没有成功的话,可以修改安装程序的安装文件列表 setup.lst。将相应宏中的参数设置为DLLSelfRegister。如果不需要自注册,可以将该项删除(注意逗号要保留)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论