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对象

image

我们在默认的那个Class1中添加一个方法(Test),让它实例化一个窗口,并且用模态的方式打开该窗口。【仅仅为了演示目的,我们不准备实现任何的逻辑】

image

最后编译的结果,就得到一个dll

image

这个时候,其实就可以使用它了。我们刚才在编译它的时候,其实已经完成了注册过程。如果你是仅仅从别人那里获得该dll,那么需要手工地注册先。

regsvr32 Myactivexdll.dll

我们该怎么使用它呢?下面分别演示了两种方式

1. 通过vbs直接调用它

image

2. 通过javascript在网页中使用它。

image

不管用何种方式,他们最终都想显示下面这样的效果

image

只要是做过web开发的朋友一定会有体会,要在网页编程里面打开这样的窗口是多么难的事情。而ActiveX则很容易做到这一点。

但是,这里有一个关键,ActiveX是客户端技术,也就是说必须保证所有客户端都有这个组件才有效。所以,下一步我们要为该dll打包,以便让其能够提供下载安装

首先,启用打包和展开向导【外接程序】=》【外接程序管理器】

image

运行该向导,就可以得到下面的一些文件

image

最重要的是那个MyActivexdll.CAB压缩包文件,里面有两个文件

image

重点是那个INF文件包含了一些注册信息

然后,我们再来看一个测试页面MyActivexdll.HTM,该页面演示了如果该页面需要使用该ActiveX对象,则应该嵌入相应的标记

image

如果该页面嵌入了该标记,那么在打开的时候就会出现下面提示

image

image

最后,我们的ActiveX控件将出现在IE的加载项里面

image

上一篇介绍了在VB 6.0中编写ActiveX对象的做法,这一篇来谈谈如何编写ActiveX控件。

【注意,事实上,对象和控件是我自己的区分方法,前者在页面上并没有形状,而后者有。但外界普遍统称为ActiveX控件。】

这就是我们看到一个ActiveX控件(ocx)在页面中的效果,它显示了用户本机的文件系统

image

下面来看一看我们如何一步一步实现它

首先创建一个ActiveX控件这种项目

image

【这里其实我们可以看到三种不同的ActiveX项目,ActiveX EXE生成的结果是exe(可执行文件),ActiveX DLL生成的结果是dll (动态链接库),ActiveX 控件生成的结果是ocx(控件库)

在界面上进行控件的布局和设计(和标准的用户控件开发是一样的)

image

事实上,作为演示目的,到这里就足够了,你现在需要做的是:按下F5键,进行调试。VB会自动打开一个页面,并将控件显示在里面。就如你在本文的顶部看到的效果那样。它其实一点都不神秘,就是一个Object标记而已。还记得Flash吗?你去看任何页面里面的Flash的时候,其实都是使用了一个ocx控件来显示的(我们称之为Flash Player),而你注意看它们其实不过是一个Object标记而已。

image

下面我们同样可以看一下,如何打包这个ocx控件。道理和第一篇是一样的

image

image

image

posted @ 2009-04-08 09:23  Justin-挺  阅读(294)  评论(0)    收藏  举报