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

转载 2007年10月07日 19:34:00
 方法如下:

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

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

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

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

<ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
Public Class ComCClass 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


End Class

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

 

<ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
Public Class ComCClass 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()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封装组件成com的方法

vb.net封装组件成com的方法    前几天一直在研究如何将.net的组件封装成com供非托管代码调用。上网查资料,查书,试验,最后测试了vb.net,c#,vc++.net 等多种语言,都没...

VB.NET自定义组件方法及注意事项

Imports System.ComponentModelImports System.IOImports System.Windows.FormsImports YeWuBillPublic Cla...

vb.net环境下将DataTable转成泛型集合方法

做机房收费系统的时候,遇到这样一个问题,将数据库表中的数据取出一行,将每个单元格中的内容填充到窗体 的文本框中。考虑到用DataReader获取结果的复杂性,我就用了泛型集合。可是这么一用却出现了如...

VC++调用VB.NET缩写的COM

现在COM组件的使用越来越广泛,在各个程序中调用COM组件我想大家都遇到过,这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用VB编写和调用CO...

COM与.NET交互简单示例--追忆VB6

导读:本文以VB6为例,主要介绍.NET引用COM和COM引用.NET的两个简单示例。

C#与vb6 com组件的互相调用方法

COM(Component Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在...
  • hrex
  • hrex
  • 2011年11月04日 17:08
  • 2073

VB语言COM组件开发GUID指定方法

一、背景          VS2010开发环境下,VB的开发许多代码可以自动的生成模板,节省大量开发时间。 二、方法    新建一个项目,选择Visual Basic\Window \ 类库,假设项...
  • zhouqt
  • zhouqt
  • 2016年05月24日 21:12
  • 1111

【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集

如何解决:没有包含要从继承的组件的已生成程序集
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vb.net 封装组件成com的方法
举报原因:
原因补充:

(最多只允许输入30个字)