ActiveX

ActiveX是由微软创建的一个开放的集成平台,为开发人员、用户和Web生产商提供了一个快速而简便的在Internet和Intranet创建程序集成和内容的方法。它可以轻松方便地在Web页中插入多媒体效果、交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体CD-ROM。ActiveX在广义上是指微软公司的整个COM架构,但现在通常用来称呼基于标准COM接口来实现对象链接与嵌入(OLE)的ActiveX控件。ActiveX控件是指从VBX发展而来的,面向微软的Internet Explorer技术而设计的以OCX为扩展名的OLE控件。通过定义容器和组件之间的接口规范,如果编写了一个遵循规范的控件,那么可以很方便地在多种容器中使用而不用修改控件的代码。ActiveX在1996年被微软公司推出,它不依赖于Microsoft Windows操作系统,但实际上,大多数ActiveX控件只能在Windows上运行。大多数ActiveX控件还需要客户端在基于x86的计算机上运行,因为ActiveX控件包含编译代码。ActiveX仍然在Microsoft Edge的“Internet Explorer模式”中得到支持,但它的扩展系统与基于谷歌的Chromium项目的Microsoft Edge不兼容。

微软定义

根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。

ActiveX控件是Microsoft的ActiveX技术的一部分。ActiveX控件是可以在应用程序和网络中计算机上重复使用的程序对象。创建它的主要技术是Microsoft的ActiveX技术,其中主要是组件对象模型(COM)。ActiveX控件可以以小程序下载装入网页,也可以用在一般的Windows和麦金塔应用程序环境中。一般说来,ActiveX 控件代替了原先的OCX,它与Applet的概念和功能差不多。ActiveX控件可以由不同的可以识别微软的COM技术的语言开发,它是一个组件或自包含的软件包,它可以在同一个或分布式的计算环境中开发或使用。COM的分布式支持技术称为DCOM。在实现中,ActiveX控件是一个动态链接库(DLL)模块,它包括在容器(包括COM程序接口的应用程序)当中。这种可重复使用的组件技术可以加快开发速度和质量,Windows 95 /NT应用程序开发程序如Powerbuilder和Access都利用了ActiveX控件  。

Windows操作系统中以OCX结尾的文件,OCX代表“对象链接与嵌入控件”(OLE),这个技术是微软提出的程序技术,用于处理桌面文件的混合使用。组件对象模型的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。

控件分类

自动化服务器

可以由其他应用程序编程驱动的组件。自动化服务器至少包括一 个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。

自动化控制器

那些使用和操纵自动化服务器的应用程序。

控件

ActiveX控件等价于以前的OLE控件或OCX。一个典型的控件包括设计时和运 行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的 IConnectionPoint接口用于控件可引发的事件。

文档

ActiveX文档,即以前所说的DocObject,表示一种不仅仅是简单控件或自动 化服务器的对象。ActiveX文档在结构上是对OLE链接和模型的扩展,并对其所在的 容器具有更多控制权。一个最显著的变化是菜单的显示方式。一个典型的OLE文档的 菜单会与容器菜单合并成一个新的集合,而ActiveX文档将替换整个菜单系统,只表 现出文档的特性而不是文档与容器共同的特性。

容器

ActiveX容器是一个可以作为自动化服务器、控件和文档宿主的应用程序。

控件优点

组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或powerbuilder,甚至一些技术性语言如VBScript

控件

以前称为OLE控件或OCX控件是组件(或对象)打包别人编程功能。以便您可以重用Web页或在其他程序中插入。例如,随InternetExplorer一起提供ActiveX控件可用于增强Web页具有复杂格式功能和动画。

ActiveX控件结合了Java程序和网景插件优点,还可以用许多编程语言,包括所有微软编程和在数据库语言编写程序中使用ActiveX控件。

使用ActiveX控件可快速实现小型的组件重用、代码共享。

除此之外,为了满足更多地需求,也出现集成于各种开发环境的ActiveX控件,由第三方提供,如ComponentOne Studiofor ActiveX、ActiveReportsCOM、TX Text Control ActiveX等。这些ActiveX控件有助于开发出商业级的Windows应用程序。应该根据实际情况,合理使用。

文档

用一个ActiveX-识别Web浏览器如InternetExplorer,浏览时ActiveX文档使您能够使用自己的工具栏和菜单可打开程序。这意味着您可以通过使用ActiveX-识别Web浏览器打开非HTML,如MicrosoftExcel或MicrosoftWord文件。

脚本

ActiveX脚本支持最常用脚本语言,包括微软 Visual Basic脚本和ECMAScript。ActiveX脚本可用于集成行为若干ActiveX控件或Java程序从Web浏览器或服务器,扩展其功能。

特点

在因特网上,ActiveX插件软件的特点是:一般软件需要用户单独下载然后执行安装,而ActiveX插件是当用户浏览到特定的网页时,IE浏览器即可自动下载并提示用户安装。ActiveX插件安装的一个前提是必须经过用户的同意及确认。

ActiveX插件技术是国际上通用的基于Windows平台的软件技术,除了网络实名插件之外,许多软件均采用此种方式开发,例如Flash动画播放插件、微软 MediaPlayer插件、CNNIC通用网址插件等。

相关内容

保证安全

当通过Internet发行软件时,软件的安全性是一个非常引人注意的问题,IE浏览器通过以下的方式来保证ActiveX插件的安全:

ActiveX使用了两个补充性的策略:安全级别和证明,来追求进一步的软件安全性;

Microsoft提供了一套工具,可以用它来增加ActiveX对象的安全性;

通过Microsoft的验证代码工具,可以对ActiveX控件进行签名,这告诉用户你的确是控件的作者而且没有他人篡改过这个控件;

为了使用验证代码工具对组件进行签名,必须从证书授权机构获得一个数字证书;证书包含表明特定软件程序是正版的信息,这确保了其他程序不能再使用原程序的标识。证书还记录了颁发日期。当您试图下载软件时,Internet Explorer会验证证书中的信息,以及当前日期是否在证书的截止日期之前。如果在下载时该信息不是最新的和有效的,Internet Explorer将显示一个警告;

在IE默认的安全级别中,ActiveX控件安装之前,用户可以根据自己对软件发行商和软件本身的信任程度,选择决定是否继续安装和运行此软件。

Internet Explorer 7中,安全性有进一步的提高。

相关技术

比较流行的组件模型有COM(Component Object Model,对象组件模型)/DCOM(Distributed COM,分布式对象组件模型)和CORBA(Common Object Request Broker 建筑,公共对象请求代理体系结构)。到这里,已经出现了与本文相关的主题COM,而CORBA与本文无关,就不作介绍。之所以从组件与对象的区别说起,是想让大家明确COM和CORBA是处在整个体系结构的最底层,如果暂时对此还不能理解,不妨继续往下看,最后在回过头看一看就自然明白了。

现在开始阐述ActiveX、OLE和COM的关系。首先,让大家有一个总体的概念,从时间的角度讲,OLE是最早出现的,然后是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是微软的复合文档技术,它的最初版本只是瞄准复合文档,但在后续版本OLE2中,导入了COM。由此可见,COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。组件对象模型的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。COM的第一个使用者却是OLE2,所以COM与复合文档间并没有多大的关系,实际上,后来COM就作为与复合文档完全无关的技术,开始被广泛应用。这样一来,微软就开始“染指”通用平台技术。但是COM并不是产品,它需要一个商标名称。而那时Microsoft的市场专家们已经选用了OLE作为商标名称,所以使用COM技术的都开始贴上了OLE的标签。虽然这些技术中的绝大多数与复合文档没有关系。Microsoft的这一做法让人产生这样一个误解OLE是仅指复合文档呢?还是不单单指复合文档?其实OLE是COM的商标名称,自然不仅仅指复合文档。但Microsoft自己恐怕无法解释清楚,这要花费相当的精力和时间。于是,随着Internet的发展,在1996年春,微软改变了主意,选择ActiveX作为新的商标名称。ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档。当然,ActiveX最核心的技术还是COM。ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而 ActiveX则以提供进一步的网络应用与用户交互为主。

COM地位

到这里,大家应该对ActiveX、OLE和COM三者的关系有了一个比较明确的认识,COM才是最根本的核心技术,所以下面的重点 COM。让对象模型完全独立于编程语言,这是一个非常新奇的思想。这一点从C++和Java的对象概念上,我们就能有所了解。但所谓COM对象究竟是什么呢?为了便于理解,可以把组件对象模型看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和一组支持库。COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。从浏览器端看,无任何区别。这样一个通用的处理技巧非常有用。例如,由用户协调运行的两个应用,可以将它们的共同作业部分作为COM对象间的交互来实现(当然,OLE复合文档也能做到)。为在浏览器中执行从Web服务器下载的代码,浏览器可把它看作是COM对象,也就是说,COM技术也是一种打包可下载代码的标准方法(ActiveX控件就是执行这种功能的)。甚至连应用与本机OS进行交互的方法也可以用COM来指定,例如在Windows和Windows NT中用的是新API,多数是作为COM对象来定义的。

组件对象模型虽然起源于复合文档,但却可有效地适用于许多软件问题,它毕竟是处在底层的基础技术。用一句话来说,COM是独立于语言的组件体系结构,可以让组件间相互通信。随着计算机网络的发展,COM进一步发展为分布式组件对象模型,这就是DCOM,它类似于CORBA的ORB,本文对此将不再做进一步的阐述。通过上面的讲述相信大家一定对ActiveX、OLE和COM/DCOM的关系有了一个清楚的了解。

规避风险

ActiveX控件有较强的功能,但也存在被人利用的隐患,网页中的恶意代码往往就是利用这些控件编写的小程序,只要打开网页就会被运行。所以要避免恶意网页的攻击只有禁止这些恶意代码的运行。

IE对此提供了多种选择,具体设置步骤是:“工具”→“Internet选项”→“安全”→“自定义级别”,建议您将ActiveX控件与相关选项禁用,谨慎些总没有错!

另外,在IE的安全性设定中我们只能设定Internet、本地Intranet、受信任的站点、受限制的站点。不过,微软在这里隐藏了“我的电脑”的安全性设定,通过修改注册表把该选项打开,可以使我们在对待ActiveX控件时有更多的选择,并对本地电脑安全产生更大的影响。

下面是具体的方法:打开“开始”菜单中的“运行”,在弹出的“运行”对话框中输入Regedit.exe,打开注册表编辑器,点击前面的“”号顺次展开到:HKEY_CURRE-NT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones\0,在右边窗口中找到DWORD值“Flags”,默认键值为十六进制的21(十进制33),双击“Flags”,在弹出的对话框中将它的键值改为“1”即可,关闭注册表编辑器。无需重新启动电脑,重新打开IE,再次点击“工具→Internet选项→安全”标签,你就会看到多了一个“我的电脑”图标,在这里你可以设定它的安全等级。将它的安全等级设定高些,这样的防范更严密。

备注

在编辑过程中,采用了部分机器翻译的内容。

广泛应用

ActiveX 控件是一种可重用的软件组件,通过使用 ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。如,StockTicker控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性。如今,已有1000多个商用的ActiveX控件,开发控件可以使用各种编程语言,如C,C++,下一代的微软 Visual Basic®,以及微软公司的 Visual Java开发环境Microsoft Visual J++™。 主要的编辑语言是:主要的是C++,VB,VC,C#,Java,delphi,powerbuilderVBScript。ActiveX控件一旦被开发出来,设计 和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用 ActiveX控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程序的设计。

ActiveX控件可以在Windows窗体和Web程序上使用,所以不管是什么语言开发的应用程序只要在windows窗体和HTML页面中使用,同时也可以在麦金塔和JAVA平台使用,大部分均采用ActiveX控件,这就是我们平时看到的各种网上银行的安全控件等应用。

参考资料

ActiveX.知网[.2021-12-05