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

vb.net 通过厂创建com对象的方法     vb.net中要创立com对象可以用new或者CreateObject,就像C++中的CoCreateInstance,一步调用就直接创建了com对象。在它们之中包括了对CoGetClassObject和CreateInstance的调用。默认使用的厂是IClassFactory。     一般情况下,new或CreateObject已经够用了。但是如果我们的com组件增加了授权,也就是 阅读详情

转自:http://blog.sina.com.cn/s/blog_49d619a301009gik.html~type=v5_one&label=rela_nextarticle

 

前几天一直在研究如何将.net的组件封装成com供非托管代码调用。上网查资料,查书,试验,最后测试了vb.net,c#,vc++.net 等多种语言,都没有搞定。在论坛上发了帖子。虽然有回复,但是只是给了些资料。资料看了又看,反复的研读。照着例子一步一步地做。但总是有些地方没有成功。正在绝望中。一个朋友给了我简单的答案。我在高兴的同时也感慨自己的愚钝和呆笨。 

 原来在vs.net 2005中用vb来实现这个功能是如此的简单。 

 方法如下: 

 新建一个 项目 ,选择 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 

  End Class 

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

  int intValue 

  oleobject objOle 

  objOle=create OLEObject 

  intValue=objOle.connecttonewobject("ClassLibrary1.ComC") 

  objOLe.Northsnow("I am Northsnow") 

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

 我在C#中没有看到类似的com类. 

 现在这个棘手的难题解决了之后,工作可以继续了。心理挺高兴的。但是在高兴之余又有一种奇怪的感觉。 

 VS.net的确的很强。把很多复杂的东西都包装起来帮我们实现。我们在享受轻松的解决难题的时候,距离底层技术却越来越远。不知道是喜是悲。

 

 

vb.net 封装组件com方法 NULL 博文链接:https://teddywang.iteye.com/blog/780540 立即下载

相关推荐

VB.NET制作自己控件(Usercontroll)

VB.NET制作自己控件(Usercontroll) 最基础vb.net 控件教程 把功能封装在控件里面

C#编写dll库文件并注册为COM组件供其他语言(如PHP等)调用

最近做一个项目,需要在WEB端上传文件并打zip包,供c#编写的客户端软件下载更新,中间需要双方都获取zip文件的最后修改时间(时分秒等信息)并按规则计算版本号,来决定是否更新该zip包,由于php只能获取到精确到秒的文件修改时间,而c#的FileInfo获取到的文件修改时间是精确到微秒,而且这两个时间在微秒的取舍上并没有四舍五入、逢余进一等规律,所以自己用C#编写了一个dll库,提供C#的文件

步知道 3126

精彩编程与编程技巧-如何用VB6写COM组件(一)...

精彩编程与编程技巧-如何用VB6写COM组件(一) ...

如何使用 Visual Basic .NET Office COM 加载项

如何使用 Visual Basic .NET Office COM 加载项 察看本文应用于的产品 文章编号 : 302896 最后修改 : 2006年1...

weixin_34106122的博客 629

VB.net调用Com组件方法

第一种方法 Dim oType As Type = Type.GetTypeFromProgID("Aniu.AnSoft") Dim obj As IAnSoft = CType(Activator.CreateInstance(oType), IAnSoft) Dim bk As IBasePlugInterFace = obj.get...

阿牛的博客 3575

vb.net编写并调用com元件

利用vb.net编写并调用com元件的过程:1、建立ClassLibrary。即建立一个库。然后将默认的普通class删掉,右键Item,选择ComClass,在这个中需要引入.NET下的System.EnterpriseServices这个架构的支持。方法是:Add Reference,然后选择.net下的这个架构。然后再该中Imports System.EnterpriseServices                 Imports System.Runtime.InteropServices

studyandhappy的专栏 3090

VB.NET中制作COM_DLL在VBA、VB中调用

.net中新建的dll在VB.VBA中不能正常使用,使用该方法可以解决。

阿亮的专栏 2668

pb 调用com组件

//int result//myoleobject=create OLEObject//result=myoleobject.connecttonewobject(pb90.n_unictoansi)////if result=-2 then   //没有注册则注册dll//    if run(regsvr32 /s  +GetCurrentDirectory ( )+/unictoa

MakeToday的专栏 3945

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

现在COM组件的使用越来越广泛,在各个程序中调用COM组件我想大家都遇到过,这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用VB编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件。操作规程与上一篇C

jeromeyu的专栏 1555

VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(一)

为了保护自己辛辛苦苦编写的Excel VBA代码不被盗用,我们需要对Excel VBA代码进行加密。通常的做法是利用给工程设置密码的方法实现加密,对于这加密方法,由于存在安全度低、易破解等问题,因此往往起不到应有的效果。通过将Excel VBA代码封装DLL动态链接库,可有效防止代码被非法查看。在百度里搜索“封装EXCEL VBA”关键字,有很多封装VBA的教程,但99%是利用VB6(Microsoft Visual Basic 6.0)来封装,主要原因是VB6的操作界面及语法与Excel的VBA具有极

chinaherolts2008的博客 3859

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

一、背景          VS2010开发环境下,VB的开发许多代码可以自动的生模板,节省大量开发时间。 二、方法    新建一个项目,选择Visual Basic\Window \ 库,假设项目名为ClassLibrary1    在solution manager(解决方案资源管理器)中的项目上点击右键,在弹出的菜单上点击添加,在弹出的对话框中选择“com”,修改的名称(本

海纳百川,有容乃大。 3253

vb文件使用C#封装com组件调用

1、新建一个库项目 2、将Class1.cs改为我们想要的名字(例如:MyClass.cs) 问是否同时给改名,确定 3、修改Properties目录下面的AssemblyInfo.cs   ComVisible属性设置为true 改下图 4、项目->MyLib属性 切换到“生”选项卡,在底部位置,勾选“为COM互操作注册” 切换到“签名...

csc418217的博客 1450
上一篇: DLL封装 C++
下一篇: vs.net中生成制作Com组件 C#
ruoyuseu
博客等级 码龄18年 7粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值