熊哥的专栏

熊熊小院

vb.net 封装组件成com的方法

 方法如下:

  新建一个 项目 ,选择 Visual Basic / Window / 类库 ,假设项目名为ClassLibrary1

  然后 在 solution manager(解决方案资源管理器)中, 将 新创建的 Class1.vb 文件删除。

  然后 在  solution manager(解决方案资源管理器)中 的项目上点击右键 ,在弹出的菜单上 点击 添加 / 类 ,在弹出的对话框中选择 com类 ,修改类的名称(本例中修改为ComC.vb),后点击 添加 按钮。

则会看到ComC.vb的代码如下:

<ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
Public Class ComC

COM GUID

    
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New() 
    ' 否则, 将不会在 
    ' COM 注册表中注册此类,且无法通过
    ' CreateObject 创建此类。
    Public Sub New()
        
MyBase.New()
    
End Sub


End Class

现在只要在这个类中添加 public 的成员即可 ,假如我们添加一个 方法 Northsnow

 

<ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
Public Class ComC

COM GUID#Region "COM GUID"
    
' 这些 GUID 提供此类的 COM 标识 
    ' 及其 COM 接口。若更改它们,则现有的
    ' 客户端将不再能访问此类。
    Public Const ClassId As String = "97451265-d75d-4d5a-a39d-6c4b68f8dd99"
    
Public Const InterfaceId As String = "5015b9e7-64e6-4750-8c28-5c51d968f1d6"
    
Public Const EventsId As String = "1afd03f4-5974-445e-8ca2-a8e9be3432d7"
#End Region


    
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New() 
    ' 否则, 将不会在 
    ' COM 注册表中注册此类,且无法通过
    ' CreateObject 创建此类。
    Public Sub New()Sub New()
        
MyBase.New()
    
End Sub

    
Public Sub Northsnow(ByVal ss As String)

        
MsgBox(ss)
    
End Sub
    Public Function T(ByVal t1 As Int16, ByVal t2 As Int16) As Integer
        Dim q As Integer
        q = t1 * t2
        Return q
    End Function


End Class

然后就可以编译,编译后,在Delphi7 中添加如下的代码来调用这个com

{$R *.dfm}
  uses   ComObj ;
procedure TForm1.Button1Click(Sender: TObject);
var
  A_Com:Variant;
begin
A_Com := CreateOleObject('ClassLibrary1.ComC');
//A_Com.Northsnow('abcdefg');
edit1.Text:=inttostr(A_Com.T(10,5));   //Eedit1.text返回值为50
end;

运行这个程序就会看到效果。

阅读更多
个人分类: VB.NET编程
上一篇vb.net2005 LinkLabel1的使用
下一篇vb.net的数组的基类是 System.Array
想对作者说点什么? 我来说一句

vb.net封装组件com方法

2011年09月14日 23KB 下载

C# 通过反射调用com组件

2017年10月08日 5KB 下载

没有更多推荐了,返回首页

关闭
关闭