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;

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

.Net提供三种途径供我们导入一个COM组件

.Net提供三种途径供我们导入一个COM组件:      - 通过Visual Studio .Net提从的“添加引用”功能      - 通过命令行方式——TLBIMP.EXE      - 使用S...
  • gasx
  • gasx
  • 2006年06月25日 21:37
  • 1122

.NET调用Com组件事例

在程序设计中,往往通过键盘的某个按键来完成相关操作!  下面就来说明如何实现: 1.引入名称空间;using System.Runtime.InteropServices;(由于使用到API(user...
  • shizhiyingnj
  • shizhiyingnj
  • 2007年02月11日 23:23
  • 7265

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

  前几天一直在研究如何将.net的组件封装成com供非托管代码调用。上网查资料,查书,试验,最后测试了vb.net,c#,vc++.net 等多种语言,都没有搞定。在论坛上发了帖子。虽然有回复,但是...
  • precipitant
  • precipitant
  • 2007年09月07日 11:35
  • 4094

将.net组件注册为com组件

切换到MS-DOS命令行下面,运行:C:/>regasm ClassLibrary1.DLL /regfile:ClassLibrary1.reg 上面的命令行是注册我们的.NET组件,并且产生了一个...
  • y97523szb
  • y97523szb
  • 2004年11月09日 10:20
  • 1862

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

转自:http://blog.sina.com.cn/s/blog_49d619a301009gik.html~type=v5_one&label=rela_nextarticle 前几天一直在研究如...
  • ruoyuseu
  • ruoyuseu
  • 2009年02月23日 15:06
  • 476

如何将VB.NET程序打包成可执行的.exe程序

一).创建部署项目 1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。 2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项...
  • woqin1990
  • woqin1990
  • 2013年11月22日 17:32
  • 2845

实时接收com组件抛出的事件

一、找到事件对用的DISPID 二、添加委托类 #pragma once #include "oaidl.h" #include #include "testEventCtrl.h" #define...
  • angellove156
  • angellove156
  • 2014年12月16日 14:49
  • 880

COM组件 接口(Interface)的来历

作为客户端程序员,它希望或者说他要求:我的程序只写一次,然后不做任何修改就可以调用任意一个组件。举例来说: 你可以在 Word 中嵌入 Excel,也可以嵌入 Picture,也可以嵌入任何...
  • mniwc
  • mniwc
  • 2011年08月31日 21:19
  • 2830

vb.net编写并调用com元件

利用vb.net编写并调用com元件的过程:1、建立ClassLibrary。即建立一个类库。然后将默认的普通class删掉,右键Item,选择ComClass,在这个类中需要引入.NET下的Syst...
  • studyandhappy
  • studyandhappy
  • 2010年07月27日 00:27
  • 1972

封装控件的原理[未完待续]

前言一个控件从外在特征来说,主要是封装这几点:交互方式显示样式数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内;而一个...
  • u014010699
  • u014010699
  • 2016年03月12日 10:43
  • 471
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vb.net 封装组件成com的方法
举报原因:
原因补充:

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