VB 6.0和C#编写ActiveX控件的实践
引自http://www.cnblogs.com/chenxizhang/
ActiveX对象或者控件是一个时代的产物,关于它的介绍网上也有很多。我这里摘录最简单的描述。
ActiveX 控件(以前称作 OLE 控件)是可以充当浏览器插件的可重复使用的组件,有些像微型的应用程序。ActiveX 控件在 Windows 系统上的 Internet Explorer 中运行,但它们不在 Macintosh 系统上或 Netscape Navigator 中运行。Dreamweaver 中的 ActiveX 对象使您可为访问者的浏览器中的 ActiveX 控件提供属性和参数。
简单来说,ActiveX对我们来说最经常意味着在使用IE浏览器去浏览某些网站时,会弹出的一个提示安装的对话框。它可以帮助web程序实现一些富客户端功能,例如客户端打印,图片上传等等操作。
【要知道,web程序对客户端并没有任何控制能力,除非用客户端脚本(例如vbscript,javascript等),但要实现更加丰富的功能,ActiveX无疑是比较好的一个选择】
使用VB 6.0编写ActiveX对象或者控件
一。编写ActiveX对象
我们在默认的那个Class1中添加一个方法(Test),让它实例化一个窗口,并且用模态的方式打开该窗口。【仅仅为了演示目的,我们不准备实现任何的逻辑】
最后编译的结果,就得到一个dll
这个时候,其实就可以使用它了。我们刚才在编译它的时候,其实已经完成了注册过程。如果你是仅仅从别人那里获得该dll,那么需要手工地注册先。
regsvr32 Myactivexdll.dll
我们该怎么使用它呢?下面分别演示了两种方式
1. 通过vbs直接调用它
2. 通过javascript在网页中使用它。
不管用何种方式,他们最终都想显示下面这样的效果
只要是做过web开发的朋友一定会有体会,要在网页编程里面打开这样的窗口是多么难的事情。而ActiveX则很容易做到这一点。
但是,这里有一个关键,ActiveX是客户端技术,也就是说必须保证所有客户端都有这个组件才有效。所以,下一步我们要为该dll打包,以便让其能够提供下载安装
首先,启用打包和展开向导【外接程序】=》【外接程序管理器】
运行该向导,就可以得到下面的一些文件
最重要的是那个MyActivexdll.CAB压缩包文件,里面有两个文件
重点是那个INF文件包含了一些注册信息
然后,我们再来看一个测试页面MyActivexdll.HTM,该页面演示了如果该页面需要使用该ActiveX对象,则应该嵌入相应的标记
如果该页面嵌入了该标记,那么在打开的时候就会出现下面提示
最后,我们的ActiveX控件将出现在IE的加载项里面
上一篇介绍了在VB 6.0中编写ActiveX对象的做法,这一篇来谈谈如何编写ActiveX控件。
【注意,事实上,对象和控件是我自己的区分方法,前者在页面上并没有形状,而后者有。但外界普遍统称为ActiveX控件。】
这就是我们看到一个ActiveX控件(ocx)在页面中的效果,它显示了用户本机的文件系统
下面来看一看我们如何一步一步实现它
首先创建一个ActiveX控件这种项目
【这里其实我们可以看到三种不同的ActiveX项目,ActiveX EXE生成的结果是exe(可执行文件),ActiveX DLL生成的结果是dll (动态链接库),ActiveX 控件生成的结果是ocx(控件库)
在界面上进行控件的布局和设计(和标准的用户控件开发是一样的)
事实上,作为演示目的,到这里就足够了,你现在需要做的是:按下F5键,进行调试。VB会自动打开一个页面,并将控件显示在里面。就如你在本文的顶部看到的效果那样。它其实一点都不神秘,就是一个Object标记而已。还记得Flash吗?你去看任何页面里面的Flash的时候,其实都是使用了一个ocx控件来显示的(我们称之为Flash Player),而你注意看它们其实不过是一个Object标记而已。
下面我们同样可以看一下,如何打包这个ocx控件。道理和第一篇是一样的

浙公网安备 33010602011771号