OCX组件
转自:http://blog.sina.com.cn/s/blog_4ca9ceef0100ixzb.html
一、OCX(OLE Control Extensio,OLE Object Linking and Embedded)组件的来历是怎样的?
对象链接和嵌入用户控件(是一种可以由在微软的Windows系统中运行的应用软件创建使用的特殊用途的程序,定义 ActiveX控件.ActiveX控件是可重用的软件组件。 用途 使用它可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。ActiveX控件的使用者可以无需知道这些组件是如何开发的,便可以完成网页或应用程序的设计。
.OCX文件是OCX对象链接和嵌入用户控件(是一种可以由在微软的Windows系统中运行的应用软件创建使用的特殊用途的程序)的扩展名,下来说说什么是OCX控件! 说说什么是OCX控件? 如果你用过Visual Basic或者Delphi一类的可视化编程工具,那么对控件这个概念一定不会陌生,就是那些工具条上的小按钮,如EditBox,Grid,ImageBox,Timer等等。每个控件都有自己的事件(事件) 、方法(方法)和属性(属性)。使用了控件的编程非常容易。
首先,在程序的设计阶段可以设置一些属性,如大小,位置,标题(caption)等等;在程序运行阶段,可以更改这些属性,还可以针对不同的事件,调用不同的方法来实现对该控件的控制。控件就好象一块块的积木,程序要做的事只是将这些积木搭起来。控件的最大好处是可以重复使用,甚至可以在不同的编程语言之间使用,例如你可以在VB中嵌入用VC开发的控件。控件的本质是微软公司的对象链接和嵌入(OLE)标准。由于它充分利用了面向对象的优点,使得程序效率得到了很大的提高,从而得到了广泛的应用。国外有很多公司就是专门制作各种各样控件的。控件的最早形式是以.VBX的格式出现的,后来变成了.OCX。
由于Internet的广泛流行,微软公司推出了ActiveX技术,就是从OLE发展起来的,加入了WWW上的功能。所以目前最流行的是ActiveX控件。 对象链接和嵌入用户控件(OCX)是一种可以由在微软的Windows系统中运行的应用软件创建使用的特殊用途的程序。OCX提供操作滚动条移动和视窗恢复尺寸的功能。如果你有Windows系统,你会发现在你的Windows地址录里有大量OCX文件名后缀的文件。 对象链接和嵌入(OLE)被设计来支持混合文档(包含多种资料类型,比如文本、绘画图像、声音、动画)。
Windows桌面就是一个混合文档的范例,微软使用OLE(Object Linking and Embedded,OLE)对象的链接与嵌入来建立的。OLE和组件对象模型(COM继OLE后的更常用的概念)支持“即插即用”程序的发展,“即插即用”程序在系统中可以用任何语言写入并可以由任何应用程序动态地使用。这些程序被认为是他们在其上运行的Container的组建和应用程序。这种基于组件的近似应用程序的发展缩减了程序调试时间并改善了程序的性能和品质。Windows应用发展程序(比如PowerBuilder和Microsoft Access)具有OCX的优势。
二、OLE和OCX的关系是什么?
OLE和OCX通称对象链接与嵌入。OLE与OCX的应用主要是源于将多个应用信息源组合到一起的目标。OCX得到广泛的应用,因为它能更好的与应用程序相结合,从而实现不好实现或是很难实现的功能。实际上, Visual Basic等等其它程序会提供多处实现特定功能的OCX控件。通过它们,我们可以非常容易的实现一些本身不能实现的功能。
三、控件与DLL的关系是什么?
组件的前身是动态链接库(DLL),DLL使我们能够用一种语言开发一个可以用于任何其他语言的过程库。DLL的另一个强大的功能是在运行期间被加载的,这使得我们能够将开发任务划分为一个个组件而不必开发并静态链接一个大型应用程序。
关于DLL的介绍
DLL,动态链接库,Dynamic Link Library的缩写,是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。DLL作为共享函数库的可执行文件,封装了一个或多个已被编译、链接的函数。多个进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。DLL 还有助于共享数据和资源。 它和可执行文件(.EXE文件)非常类似,他们的区别在于 DLL 中虽然包含了可执行代码却不能单独执行,只能由需要使用它的应用程序来直接或间接调。[
通俗的说,在Windows操作系统中,许多应用程序并不是一个完整的可执行文件,它们的正确执行需要调用一些相对独立的动态链接库,即DLL文件。一个应用程序可以调用多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享 DLL 文件。[2]DLL 文件一般被存在C:\Windows\System 目录下,也可能放在应用程序所在的目录或是子目录中。
提到动态链接,先说明一下静态连接。什么是静态连接呢?在程序链接的过程中,需要将编译后的二进制代码链接成目标代码,链接器从静态链接库中获得所有被引用的函数,并将这些被引用的函数同代码一起放到可执行文件中。那么关于 DLL 的静态连接则是指链接器将被引用的库函数的代码复制到调用 DLL 的可执行模块(.dll 文件或 .exe 文件)中。
什么是动态链接呢?动态链接是系统允许可执行模块(.dll 文件或 .exe 文件)在运行程中,只需要包含在定位 DLL 函数的可执行代码所需的信息。换句话说,可执行模块(.dll 文件或 .exe 文件)在运行时加载这些模块(亦即所需的模块映射到调用进程的地址空间)。
那么动态链接和静态连接 相比,优点有哪些呢?
(1)节省内存,减少交换操作。使用动态链接,多个进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。使用静态链接,每个应用程序都包含被引用的库函数的代码,那么Windows 必须在内存中为每个应用程序加载引用的库函数的代码的一个副本。
(2)节省磁盘空间。使用动态链接,在磁盘上仅需要 DLL 的一个副本。使用静态链接,每个应用程序都包含被引用的库函数的代码。
(3)更易于升级。使用动态链接,DLL 中的函数发生变化时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。使用静态链接,在函数发生变化时,需要重新链接来生成应用程序。
(4)支持多语言程序,只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的DLL 函数。
(5)提供扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC应用程序使用。
(6)支持多语言程序,并使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。[4]
DLL 中包含下面两类函数的定义:
导出函数:这些函数由可执行模块(.dll 文件或 .exe 文件)调用。
内部函数:这些函数仅从定义它们的 DLL 中调用。DLL 还导出数据。不过,这些数据由相应的函数使用。
可以通过下列方式调用 DLL 中的函数:
加载时动态链接:可执行模块执行显式调用以导出 DLL 函数。为 DLL 创建导入库,然后将 DLL 链接到应用程序。在加载应用程序时,导入库提供加载 DLL 和查找导出的 DLL 函数所需的信息。
运行时动态链接:在运行时加载 DLL 时,可执行模块使用 LoadLibrary 函数或 LoadLibraryEx 函数。可执行模块调用 GetProcAddress 函数以获取导出的 DLL 函数的地址。在链接时,Windows 搜索预安装的一组 DLL,例如性能库 (Kernel32.dll) 和安全库 (User32.dll)。然后,Windows 按以下顺序搜索DLL:
1.当前进程的可执行程序所在的目录。
2.当前目录。
3.Windows 系统目录。(GetSystemDirectory 函数获取 Windows 系统目录的路径。)
4.Windows 目录。(GetWindowsDirectory 函数获取 Windows 目录的路径。)
5.PATH 环境变量中列出的目录。注意:LIBPATH 环境变量不用于搜索。[3]
DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL,尽管文件扩展名已改变。
您可以通过创建 DLL 实现以下目的:
(1)将程序划分为可按需加载的单独模块。
(2)存储特定于语言或特定于区域的资源。
(3)使您自己的应用程序能够使用核心代码库。
(4)生成进程内 COM 对象或 ActiveX 控件 (OCX)。
(5)将 OLE 对象用作进程内 DLL。这一用法可改进 OLE 链接的性能。
(6)使用控制面板扩展或使用某些类型的驱动程序。
四、什么是ActiveX插件(控件)?
根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。
ActiveX(COM)技术是一种嵌入式程序技术,它其实就是OLE和 OCX的融合。 ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术。 它与具体的编程语言无关。作为针对Internet应用开发的技术 ,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。在Applet中可以使用ActiveX技术 ,如直接嵌入 ActiveX控制,或者以ActiveX技术为桥梁,将其它开发商提供的多种语言的程 序对象集成到Java中。与Java的字节码技术相比,ActiveX提供了“代码签名 ”(Code Signing)技术保证其安全性。
ActiveX是Microsoft的元素软件标准。简单地说,ActiveX技术是一种共享程序数据和功能的技术。它由微软提出并大力推广,并已成为事实上的标准。 ActiveX技术是Microsoft对OLE技术的更新和发展,Microsoft公司为了适应网络的高速发展把它的OLE技术和OCX技术融为一体并加以改进形成联合标准,改进之后赋予新名字ActiveX。也就是说,ActiveX中涵盖了OLE的所有技术和功能,同时又具有许多新的特性,以适应网络发展的需要。
ActiveX指的是一组包括控件、DLL和ActiveX文档的组件,它通常以动态链接库的形式存在,其设计思想是将一个程序(比如Flash动画)嵌入到另一个程序中(这个程序通常被称做容器,比如Authorware、Delphi、VB、VC、Internet Explorer等)。借助这种技术使得用户在一个程序中所创建的信息可以被集成到其它程序所产生的文档中。.这样就可使它(如Flash动画)可以随意地应用到各种场合。
ActiveX控件的数据输入和函数功能执行都必须通过容器,因此ActiveX控件和容器之间必须有一些特定的接口协议。ActiveX控件必须具备如下的性能机制:
属性和方法:ActiveX控件必须提供属性的名称、方法的名称及参数,通过这项机制,容 器可以存取和改变ActiveX控件的属性参数。
事件:ActiveX控件由这项机制通知容器在ActiveX控件中发生的事件,比如属性参数的改变,用户按下鼠标左键等。
虽然在本质上ActiveX和OLE是同一种技术(实现不同程序的数据和功能的共享),但其目的有所差别。ActiveX的目的主要是共享程序模块之间的计算功能,生成一些专门的可以嵌入其他程序中的“小程序”,例如Microsoft web浏览器控件可以使得别的应用程序能够浏览(仅仅是浏览而不是创建)Web网页。
ActiveX控件是一个模块化的灵活对象,如果某个应用程序或网页需要增加一项特殊的功能,则无须重写整个程序,只要灵活地插入一个具有此项功能的ActiveX控件即可实现,ActiveX的优势还在于它的动态可交互性,用户可以动态地在使用过程中,通过改变它的属性和参数,在应用程序中实现自己的特殊要求。
五、什么是COM?
为了提供使对象能够与主应用程序通信的一种标准,微软原来引入了对象链接和嵌入(OLE)。原来规范的目标是提供一种途径,使应用程序,如Excel能够将电子表格嵌入到其他支持OLE标准的应用程序中。那时,人们认识到,OLE支持一种技术的基础,这种技术使得能够共享类属的对象,即组件对象模型(COM)。这种概念用于为OCX组件创建一种组件规范。这将我们带到了当前的标准ActiveX和ActiveX控件,OLE和OCX的发展最终形成了COM的顶尖产物。
可以将COM看作是在两块代码之间共享组件的二进制标准。COM根据对象可以完成的功能使得对象实现抽象化。对象可以完成的功能在其接口部分描述。接口就是对象可以实现的一组在逻辑上相关功能的访问方法。每个对象都拥有一个唯一的类ID(CLSID),它使用任意的一组接口。所有类必须具有IUNKNOWN接口,这个接口又可以被用于访问这个类支持的任何接口。这是一种功能强大的对象模型,因为它使应用程序能够在运行过程中确定任意一个对象是否可以完成某一项任务。
COM对象是通过几个方法来实现的。可以将COM对象编译成DLL或OCX,它们可以与调用应用程序在相同的进程空间中运行。COM对象还可以象编译过的可执行文件一样在它自己的进程空间中运行。利用分布式COM(DCOM),对象可以运行在不同的机器上,即可以运行在世界的任何位置。尽管COM对象的实现代码可能处于不同的进程中或不同的机器上,但COM对象系统服务去除了调用COM对象的复杂性。ActiveX组件是COM对象,这些对象实现了一套基本的接口,使组件能够被嵌入到可以主控ActiveX组件的应用程序中去。
六、OLE与COM的关系是什么?
组件对象模型COM(Component Object Model)是OLE的心脏,它不但提供了一个实现OLE的框架,还为一整类新软件提出了一种全新的设计思想。它是一种面向对象的结构,定义了一套对象间相互通信的标准方式,规定了如何使一些小的、定义良好的软件模块在系统中共存并充分地相互作用。依照这种结构,可以将若干元件组合起来,以建立更大的和更复杂的系统。
七、ActiveX的来历是怎样的?
ActiveX的演变最早可以回溯到早期的剪切和粘贴以及后来的OLE(Object Link and Ember——对象的链接与嵌入)技术。实质上,ActiveX已经不仅仅是一个技术上的问题,而是微软的整个Internet战略的中心环节。微软把它的OLE和OCX技术融为一体并加以改进,将所形成的联合标准命名为ActiveX。ActiveX把控件规范得更加精练,使得这些控件更加小巧而且效率更高,同时加强了其接口对数据和特性的管理。ActiveX可以帮助应用程序开发者、Web网页制作者建立动态的Internet工具、网页和站点。
实际上可以将Microsoft提供的ActiveX控件看成是一个小的应用程序库。这些小程序对外提供接口,可以编写脚本语言(如用Vbscript等语言编写)并对其进行控制,这样就能使网页更加生动。
八、OLE控件的宗旨是什么?
OLE控件的思想在于:开发出即插即用的可重复利用的代码,使第三方用户开发的控件很容易在自己的开发环境中得到应用。它的实质就是,用现有构件(控件)构造程序,即构件式软件。
九、对象嵌入(OCX)通俗的叫法是什么?
我们平常所说的窗口套窗口就是对象嵌入的一种。
十、OCX和DLL的区别
以.ocx为后缀名的ActiveX控件是一种比较特殊的DLL,它的基础是OLE和COM,是有交互界面的可视化控件,定义了控件的属性和方法,定义控件可引发的事件的响应。我们通常说的.DLL为后缀名的文件是一个包含函数和数据的模块集合,可以被其它应用程序共享的程序模块。
十一、关于以.ocx为后缀名的ActiveX控件
文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL。 现在的ActiveX 控件等价与以前的OLE控件或OCX,一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义了控件的属性和方法,唯一的 IConnectionPoint接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个DLL。[5]
尽管 ActiveX 和 OLE 都基于组建对象模型(Component Object Model,COM),它们为程序员提供的却是截然不同的服务。COM提供的是低级的对象捆绑机制,该机制支持对象之间的交互通讯。OLE使用COM来提供低级的应用服务,例如采用连接和嵌入机制,支持用户创建复合文档。与之不同,ActiveX提供更精细的结构,用以支持在网络站点上嵌入控件,以及对事件的交互反应。优化ActiveX,目的是为了提高时间和空间效率,而优化OLE,是为了便于终端用户的使用和集成台式系统的应用程序。ActiveX还为Internet技术带来了一些技术上的变革,例如,ActiveX大大减小了代码量(代码量减少了百分之五十到七十),支持更多的提交和异步连接。 [6]
ActiveX的基础是OLE和COM,但是通过MS的各种开发工具可以屏蔽掉COM模型中许多另人费解的技术细节。ActiveX组件技术包括以下一些方面:(1)自动化服务器 (2)自动化控制器 (3)控件 (4)COM对象 (5)文档 (6)容器 。
以.ocx为后缀名的ActiveX控件主要应用在WEB上和Window Forms程序开发上。应用程序使用ActiveX/COM组件来扩展自身的业务逻辑、事务处理和应用服务的范围。
顺便提一下以.ocx为后缀名的ActiveX控件的注册和卸载方法,在“开始”菜单的“运行”输入以下代码完成任务:
regsvr32 path & "\xxx.ocx" '注册
regsvr32 /u path & "\xxx.ocx" '卸载
其中path代表该xxx.ocx所以在的目录的路径
Activex、OLE、COM、OCX、DLL之间的区别
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。
组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。
它们的主要区别是:
1)组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用;
2)组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序;
3)组件为模块重用,而对象为代码重用。现在,比较流行的组件模型有COM(Component Objiect Module,对象组件模型)/DCOM( Distributed COM,分布式对象组件模型)和CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)。
到这里,已经出现了与本文相关的主题COM,而CORBA与本文无关,就不作介绍。
之所以从组件与对象的区别说起,是想让大家明确COM和 CORBA是处在整个体系结构的最底层,如果暂时对此还不能理解,不妨继续往下看,最后在回过头看一看就自然明白了。
现在开始阐述ActiveX、OLE和COM的关系。首先,让大家有一个总体的概念,从时间的角度讲,OLE(Object Linking and Embedded) 对象链接和嵌入是最早出现的,然后是COM和ActiveX;从体系结构角度讲,OLE和ActiveX是建立在 COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。
既然OLE是最早出现的,那么就从OLE说起,自从Windows操作系统流行以来,“剪贴板”( Clipboard)首先解决了不同程序间的通信问题(由剪贴板作为数据交换中心,进行复制、粘贴的操作),但是剪贴板传递的都是“死”数据,应用程序开发者得自行编写、解析数据格式的代码,于是动态数据交换(Dynamic Data Exchange,DDE)的通信协定应运而生,它可以让应用程序之间自动获取彼此的最新数据,但是,解决彼此之间的“数据格式”转换仍然是程序员沉重的负担。
对象的链接与嵌入(Object Linking and Embedded,OLE)的诞生把原来应用程序的数据交换提高到“对象交换”,这样程序间不但获得数据也同样获得彼此的应用程序对象,并且可以直接使用 彼此的数据内容,其实OLE是Microsoft的复合文档技术,它的最初版本只是瞄准复合文档,但在后续版本OLE2中,导入了COM。
由此可见,COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。 COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。COM是应OLE 的需求而诞生,但它的第一个使用者却是OLE2,所以COM与复合文档间并没有多大的关系,实际上,后来COM就作为与复合文档完全无关的技术,开始被广泛应用。
这样一来, Microsoft就开始“染指”通用平台技术。但是COM并不是产品,它需要一个商标名称。而那时Microsoft的市场专家们已经选用了OLE作为 商标名称,所以使用COM技术的都开始贴上了 OLE的标签。虽然这些技术中的绝大多数与复合文档没有关系。Microsoft的这一做法让人产生这样一个误解OLE是仅指复合文档呢?还是不单单指复合文档?其实OLE是COM的商标名称,自然不仅仅指复合文档。但Microsoft自己恐怕无法解释清楚,这要花费相当的精力和时间。
于是,随着Internet的发展,在1996年春,Microsoft改变了主意,选择ActiveX作为新的商标名称。ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档。当然, ActiveX最核心的技术还是COM。
ActiveX 和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而ActiveX则以提供进一步的网络应用与用户交互为主。到这里,大家应该对 ActiveX、OLE和COM三者的关系有了一个比较明确的认识,COM才是最根本的核心技术,所以下面的重点介绍COM。
让对象模型完全独立于编程语言,这是一个非常新奇的思想。这一点从C++和Java的对象概念上,我们就能有所了解。但所谓COM对象究竟是什么呢?为了便于理解,可以把COM看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和以组支持库。
COM对象 可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。从浏览器端看,无任何区别。这样一个通用的处理技巧非常有用。例如,由用户协调运行的两个应用,可以将它们的共同作业部分作为COM对象间的交互来实现(当然,现在的OLE复合文档也能做到)。为在浏览器中执行从Web服务器下载的代码,浏览器可把它看作是COM对象,也就是说,COM技术也是一种打包可下载代码的标准方法(ActiveX控件就是执行这种功能的)。甚至连应用与本机OS进 行交互的方法也可以用COM来指定,例如在Windows和Windows NT中用的是新API,多数是作为COM对象来定义的。可见,COM虽然起源于复合文档,但却可有效地适用于许多软件问题,它毕竟是处在底层的基础技术。 用一句话来说,COM是独立于语言的组件体系结构,可以让组件间相互通信。
随着计算机网络的发展,COM进一步发展为分布式组件对象模型,这就是DCOM,它类似于CORBA的ORB,本文对此将不再做进一步的阐述。通过上面的讲述相信大家一定对ActiveX、OLE和COM/DCOM的关系有了一个清楚的了解。
使用Windows的人对于ActiveX控制一定不会陌生,它提供了一种类似于DLL动态链接库的调用,不过它与DLL的唯一区别就是ActiveX不注册 不能被系统识别并使用。那么,当我们得到一个ActiveX没有被正确安装且不能使用的消息后,又要安装ActiveX怎么办呢?
1.Regsvr32程序法在Windows的System文件夹下有一个regsvr32.exe的程序,它就是Windows自己带的ActiveX注册和反注册工具。利用它也能够非常方便地注册AcitveX控件,它的用法为:regsvr32/u/s/n/idllname, dllname其中dllname为ActiveX控件文件名,建议在安装前拷贝到System文件夹下参数有如下意义:
/u - 反注册控件
/s - 不管注册成功与否,均不显示提示框
/c - 控制台输出
/i - 跳过控件的选项进行安装 (与注册不同)
/n - 不注册控件,此选项必须与/i 选项一起使用
例如笔者要注册一amovie.ocx控件,则打入 regsvr32 amovie.ocx即可,要反注册它时只需使用 regsvr32 /u amovie.ocx就行了。
2.注册表 法所谓注册AcitveX,无非是将一些信息记录在Windows的注册表中,如Shockwave Flash Object控件,我们可以运行Regedit.exe注册表编辑程序,利用关键字进行搜索,然后把搜索得到后的注册表导出为一REG注册表文件,再将其相应的ActiveX文件拷贝到Windows的System文件夹(一般ActiveX的文件名为OCX,安装在Windows的System文件夹 内)下,最后在要安装ActiveX的机器上双击导入刚才导出的注册表文件即可完成安装。
总结:Activex,OLE,COM都是微软的一些技术标准。Ole比较老后来发展成Activex,再后来发展成为COM OCX,DLL是扩展名。 Activex有两种扩展名OCX和DLL。实际上你可以把它们的扩暂名字调换。 COM作为ActiveX的更新技术,扩展名也有可能是DLL DLL文件还有可能是动态链接库。主要是装载一些函数,可以动态加载。
OCX组件的更多相关文章
- 采用自定义协议代替OCX组件
事情起源:公司视频播放一直是采用的嵌入浏览器组件实现视频的预览回放等功能.这种实现方式要求客户使用IE浏览器. 最近上线项目使用Html 5开发,要求IE11.项目中使用了视频播放功能,如果全部升级到 ...
- 查看 activex 组件的方法
查看 activex 组件的方法 可以使用的工具COMRaider 直接安装 并选择对应的类型即可查看相关的信息,比OLE/COM Object Viewer 简洁方便. 具体的操作如下: 随意选择一 ...
- Windows 注册和取消注册一个dll或者ocx
原文:Windows 注册和取消注册一个dll或者ocx 一.DLL是什么 DLL,是Dynamic Link Library 的缩写形式,中文名称为动态链接库. DLL是 ...
- Activex、OLE、COM、OCX、DLL之间区别、联系[转]
转自:http://baike.baidu.com/view/393671.htm 创建COM:http://blog.csdn.net/henry000/article/details/700839 ...
- 解决VB6.0中不能加载MSCOMCTL.OCX的错误提示
VB6.0毕竟是很古老的开发工具了,其对所使用的第三方组件依赖性比较强,例如在打开从其它电脑上拿来的VB6.0的软件(系统)的工程文件(源代码)时,经常会遇到"不能加载MSCOMCTL.OC ...
- OLE、OCX和ActiveX控件之间的比较
OLE(Object Linking and Embedding,对象连接与嵌入) 一.过去的OLE和今天的OLE 最初的OLE含义是指在程序之间链接和嵌入对象数据,它提供了建立混合文档的手段(资 ...
- JS遍历OCX方法
/----查看OCX组件的属性 <html> <head> <title>OCX</title> <meta http-equiv="C ...
- C#注册OCX控件
注意 COM组件注册到注册表中的位置,是CLSID还是TypeLib 注册方法 代码执行 //声明注册方法 [DllImport("C:\\Windows\\barcodex.ocx&quo ...
- [注意]SerialPort操作PCI-1621D多串口卡,出现异常"参数不正确"
开发LED大屏显示.40-20mA模拟量输出的时候,经常要与串口打交道.但是Windows自带的SerialPort串口操作组件貌似兼容性 不是太好,或是SerialPort本身有BUG,在操作PCI ...
随机推荐
- uchome 缓存生成
一.uchome的缓存目录 ---------data此目录要有777权限 (1)模板文件缓存机制 1:在要显示的页面通过include template($name) 语句来包含被编译后的模板文件 ...
- Python-装饰器-案例-获取文件列表
import os def get_all_path(fun): '''装饰器.功能:获取全路径文件名.如:D:/tmp/12.txt :param fun: :return:file_path_li ...
- java-mybaits-00103-入门程序原生的【查、增、删、改】
一.需求 实现以下功能: 根据用户id查询一个用户信息 根据用户名称模糊查询用户信息列表 添加用户 更新用户 删除用户 二.具体步骤 1.增加pom引用 2.增加log4j.properties # ...
- Openstack架构简介(一)
1.1.1openstack介绍: openstack是(infrastructure as a service,基础设置即服务)IAAS架构的实现,OpenStack是一个由NASA(美国国家航空航 ...
- ubuntu 用法
1:改变某一个目录的拥有者 sudo chown -hR user:user ./目录名 // user:user 用户名:组名 sudo chmod 777 文件 //给文 ...
- 前端基础(JavaScript)
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...
- cocos代码研究(21)Widget子类Text,TextAtlas,TextBMFont学习笔记
理论基础 Text类又称ttf格式文本,可以用ttf文件或者系统自带字体,支持文字多,但是ttf文件格式体积大,渲染速度慢: TextBMFont类又称fnt格式文本,纹理创建,根据纹理上有的文字来显 ...
- window.location.href = basePath + "paper/deleteExpertComment.action?expertId="+$(this).prev().val();
window.location.href = basePath + "paper/deleteExpertComment.action?expertId="+$(this).pre ...
- java压缩zip文件中文乱码问题
用java来打包文件生成压缩文件,有两个地方会出现乱码 1.内容的中文乱码问题,这个问题网上很多人给出了解决方法,两种:修改sun的源码:使用开源的类库org.apache.tools.zip.Zip ...
- BCG控件初步领略
BCGPVisualStudioGUIDemo 这个界面很不错呀,如果能够实现这种效果,能够解决系列问题 画图程序,这种界面非常先进.用于石材大板等非常优秀. email的效果 这种东西如果效果不错, ...