vb.net编写并调用com元件

利用vb.net编写并调用com元件的过程:

1、建立ClassLibrary。

即建立一个类库。然后将认的普通class删掉,右键Item,选择ComClass,在这个类中需要引入.NET下的System.EnterpriseServices这个架构的支持方法是:Add Reference,然后选择.net下的这个架构。

然后再该类中Imports System.EnterpriseServices

Imports System.Runtime.InteropServices

公共的public class必须Inherits ServicedComponent

在类中还可以写其他方法

2、在编译类库牵,可以为类库设置一个强签名。然后新建一个密钥文件,这个文件自动加入到当前项目中来。

3、修改project下的AssemblyInfo.vb。

Imports System.EnterpriseServices '必须添加

在类最后添加

'加入如下:
<Assembly: ApplicationName("COMMTEST3")> 'COMMTEST3是其他项目访问该com的名字
<Assembly: ApplicationAccessControl(False)>
<Assembly: ApplicationActivation(Activationoption.Server)>


3、编译类。

编译完类后,打开.netFrameWork2.0的SDK,进入项目只对应的路径下的bin目录,制作两个.bat文件。利用命令将制作好的com元件打包。這兩個bat文件為:RegCom.bat和URegCom.bat。 RegCom.bat文件的內容為:regsvcs %1.dll gacutil /i %1.dll UnRegCom.bat文件的內容為: gacutil /u %1.dll regsvcs /u %1.dll 制作好這兩個bat文件后,就可以將project存放路徑bin下的由先前編譯產生的.dll文件經過bat文件的處理,而制作成com元件。方法為:打开.netFrameWork2.0的SDK,进入项目只对应的路径下的bin目录,輸入:RegCom.bat +.dll文件。這樣就可以產生com元件了

如果成功将com元件打包,可以在控制面板下的组件服务下找到该com元件。

将com元件制作好后,就可以在应用程序中使用该com元件了。使用com元件有两种方式:

(1),卸载方式

(2),非卸载方式,即reference先前包装好的dll文件。同时还需要reference .net下的System.EnterpriseServices这个服务。 這兩種方法的具體代碼為: Dim msgbuf As Object msgbuf = CreateObject("ClassLibrary1.comtest2") '非卸載的方式 Dim msgbuf2 As New ClassLibrary1.comtest2 '卸載的方式 需要reference System.Enterprise.Services這個com元件 Try msgbuf.commsgtest() msgbuf2.commsgtest() Catch ex As Exception Finally ' msgbuf.dispose() msgbuf2.dispose() '釋放com End Try "ClassLibrary1.comtest2"是指定名稱下的元件。

不管是使用哪种方式,最后都需要将com元件释放,可以使用dispose()

总结:使用com元件的好处是:可以实现动态引用。当有变化时,不需要整个项目都发生变化,只需要对指定的com进行修改

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...