goldnet

导航

用C#写ActiveX控件

1.先建类库
2.增加组件库
开发基于.Net平台上的程序员是很难从本质上把Visual C#和ActiveX组件联起来,虽然在使用Visual C#开发应用程序时,有时为了快速开发或者由于.Net FrameWork SDK的不完整,还需要借助ActiveX。但即使如此,也很难把二者联系起来。其中的原因就是能够被Visual C#直接使用文件和通过Visual C#生成的可执行程序只可能是托管的文件。而Active X组件却都是非托管文件。这种文件的差异决定了二者本质"对立"。于是这就引出了本文第一个问题,ActiveX和Visual C#到底是何种关系。
 
  一.Visual C#和Active X组件:

  此时可能有些朋友会说,既然能够被Visual C#直接使用只能是托管代码文件,那在Visual C#中提供的可直接通过引用调用ActiveX又是怎么回事?的确Visual C#提供了引用ActiveX组件的操作,这种操作有效的利用了很多以前资源,使得这些资源并没有随着微软推出.Net平台而由于平台的差异被"抛弃",但这种在Visual C#中引入ActiveX组件的操作其实并不被微软公司所倡导,也不符合微软推出.Net的最终目的。这是因为微软之所以推出.Net是为了实现跨平台,为了实现"Write Once and Run Anywhere",写一遍代码,可以在任何平台上运行的目的。如果程序中使用了Active X组件,这也就从另一方面决定了此程序只能在Windows平台上使用,也就无法实现微软的"Write Once and Run Anywhere"最终目标了。

  再者Visual C#提供的引用ActiveX组件的操作,其实Active X组件被加入Visual C#的"工具箱"时,Visual Stuio .Net其实对ActiveX组件进行了很多操作,而这些操作又都被Visual C#隐藏了,使用者往往并不完全清楚。这些操作的作用就是把非托管的ActiveX组件转换成托管的组件,这些操作统称"互操作",细心的程序员可能就会发现,当往程序窗体中拖入ActiveX组件后,源程序所在目录的"Bin"目录中就会新增若干个"Dll"文件,这些文件就是Active X组件进行互操作转换后生成的。此时在Visual C#使用的并不是ActiveX组件,而是由ActiveX组件进行互操作得到可供.Net平台使用的、功能和原先ActiveX组件相同的类库了。

  既然在Visual C#中不能直接使用ActiveX组件,那种看似在Visual C#中使用的ActiveX组件其实使用的是经过了互操作后转换的类库。那么Visual C#是否能够生成Active X组件?本文就来探讨一下Visual C#中生成ActiveX组件的实现方法。制作的方法就是首先通过Visual C#创建一个Windows组件,然后把其接口以COM形式发布即可。

posted on 2006-04-11 09:21  金大侠  阅读(1447)  评论(7编辑  收藏  举报