天天看点

ActiveX 学习笔记 (一)

Activex 学习笔记(一)

    关于ActiveX,就要从COM说起。COM是一种组件开发技术,它实际上是一种共享二进制代码的技术,依照COM标准,用不同的开发语言都可以开发。从本质上讲,COM是一种动态库的衍生产品,因为遵循COM标准个组件都会在其输出中导出几个接口函数:

DllGetClassObject

DllRegisterServer

DllUnregisterServer

DllCanUnloadNow

所有的Com标准组件都必须导出这几个接口函数。通过DllGetClassObject函数展开,获得组件的类厂。然后通过通用接口CreateInstance创建对应的类,使用QueryInterface枚举类接口。

    而Activex就是COM标准的一套实现,最早原型应该是随着VB出现的VBX控件, 由于VBX控件的16位结构并不能适应32位操作系统的要求,于是就诞生了OCX控件, OCX控件是一种32位的自包含的简单应用, 它实际上是一组完成指定的功能函数集合.它实际上是DLL的另外一种表现形式. OCX控件可以有自己的界面,也可以没有界面, 它拥有属性, 方法, 而且一个OCX控件可以触发出某种类型的事件, 用来通知容器它的状态的改变或者是某种外部状态的改变或事件的发生, 实现一个OCX控件必须实现一系列既定的接口, 这使得OCX控件显得有些庞大和冗余, 因为有些控件只需要实现这些接口的一部分, 而且对于Internet 来说, 实现这些多余的接口无疑增加了控件的体积.所以在1996年PDC大会上, 微软提出了它的 Activate Internet的概念, 并把它的一些技术改称为ActiveX技术, ActiveX控件就在原先的OCX控件上经过对要实现的接口的削减而诞生了, 现在只要一个COM组件实现IUnknown接口就可以被称为 ActiveX控件. 所以可以说一个ActiveX控件就是一个实现了IUnknown接口并且支持自注册的简单的 COM组件.

    曾经有一段时间,因为Activex技术的产生,让web应用程序可以得到很多扩展,这使得整个WEB应用多元化。但是这也带来了一些隐患,因为ActiveX控件由很多人开发,其安全性得不到保障,很多恶意网站会在网页中嵌入恶意代码,调用存在漏洞的控件实现自己的攻击功能。目前因为HTML5技术的兴起,各大互联网首脑纷纷转向主流的HTML5等技术,现在的ActiveX已经成为了历史,但是还是有很多值得学习的地方。

后面将具体介绍ActiveX控件的开发流程

继续阅读