Active X组件是充分利用OLE和Active X技术的自定义组件,微软公司积极鼓励把Active X作为一个与应用程序无关的自定义组件。从本质上说,Active X组件是一个Active X服务器,他能够提供所有的OLE功能和服务,可视化编辑、拖放和OLE自动化。ActiveX控件有属性(Propertiy)、方法(method)、事件(Event)三个元素构成,他一般是以“DLL”扩展名的形式出现的。这时细心的读者可能已经注意到在.Net FrameWork SDK中的类库中的类库文件也是以“DLL”扩展名的形式出现的。那么这二种“DLL”是一种类型的么?答案是否定的。这是因为这些Net FrameWork SDK中的类库是由Common Language Runtime编译生成的,这些由Common Language Runtime编译生成的的代码就是所谓的受管代码(Managed Code),而Active X组件不是由Common Language Runtime生成的,而是由譬如:Visual Basic等语言生成的,这些代码是非受管代码(Unmanaged Code)。非受管代码是不能直接被.Net框架中的程序开发语言直接使用的,即Active X组件不能直接在Visual C#和Visual Basic .Net等程序中使用。而要经过一定的转换,把非受管代码转换成受管代码,这样才可以使用。本文就来探讨一下Visual C#中如何进行Active X组件编程。本文将按照以下顺序来介绍:首先利用Visual Basic 6.0构建一个Active X组件,然后转换这个Active X组件成可以被Visual C#使用的组件,最后在Visual C#中使用此组件。
一. 程序设计和运行的基本环境:
(1).视窗2000服务器版
(2)..Net FrameWork SDK Beta 2 版
(3).Visual Basic 6.0
二.用Visual Basic 6.0构建一个Active X组件:
(1).首先打开Visual Basic 6.0,在“文件”菜单中,选择“新建工程”,出现一个对话框,在对话框中选择“Active X DLL”,具体如下图:
(2).然后在“工具”菜单中,选择“添加过程”,命名过程名称为“show”。具体如下图:
然后在此过程中加入以下代码:
Public Function show ( )
MsgBox ( "这是在Visual C#中使用Active X!" )
End Function
(3).接着选择“工程”菜单中的“工程属性”,把刚才新建的过程重命名为“mydll”。如下图所示:
(4).生成Active X组件,产生“mydll.dll”文件:
这时选择“文件”菜单中的“生成mydll.dll”,就会在指定的目录下面产生一个Active X组件,名称为“mydll.dll”。具体操作如下图:
此Active X组件的内容十分简单,只有一个show()方法。
三.把非受管代码的Active X组件转换成受管代码的类库:
.Net框架提供了一个转换的程序,通过此程序可以把非受管代码转换为受管代码,这个程序的名称为“tlbimp.exe“。通过下面的命令就可以完成转换:
tlbimp mydll.dll /out:my.dll
此时会产生一个“my.dll”的类库,这个类库中定义了一个命名空间为“my”,在此命名空间中定义了一个类“Class1”,这个类有一个方法叫“show”的方法。
四.使用编译成受管代码的Active X组件:
其实这样说已经不十分准确了,因为Active X组件不可能是受管代码,此时的Active X组件已经变成了可以被.Net开发语言使用的类库了。这样说主要是为了更方便理解。有了上面的介绍,可以较方面的完成下列的程序。
using my ;
using System ;
public class Activex
{
public static void Main ( )
{
Class1 s = new Class1 ( ) ;
s.show ( ) ;
}
}
下图是编译后程序的运行界面:
五.总结:
Actvie X组件是一个庞大的家族,拥有很多功能强大的组件,充分利用这些Active X组件资源,不仅是对以前的资源的利用,而且有时也能够解决许多依靠现有的技术,不便于或者难以解决的问题。其实Active X组件在Visual C#中的使用方法和其在Visual Basic .Net中,以及其他.Net开发语言使用的方法是大同小异的。