加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 22:48:13 所属栏目:大数据 来源:网络整理
导读:vb.net封装组件成com的方法 前几天一直在研究如何将.net的组件封装成com供非托管代码调用。上网查资料,查书,试验,最后测试了vb.net,c#,vc++.net等多种语言,都没有搞定。在论坛上发了帖子。虽然有回复,但是只是给了些资料。资料看了又看,反复的研读。照

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

 前几天一直在研究如何将.net的组件封装成com供非托管代码调用。上网查资料,查书,试验,最后测试了vb.net,c#,vc++.net等多种语言,都没有搞定。在论坛上发了帖子。虽然有回复,但是只是给了些资料。资料看了又看,反复的研读。照着例子一步一步地做。但总是有些地方没有成功。正在绝望中。一个朋友给了我简单的答案。我在高兴的同时也感慨自己的愚钝和呆笨。   原来在vs.net2005中用vb来实现这个功能是如此的简单。   方法如下:   新建一个 项目 ,选择 VisualBasicWindow类库 ,假设项目名为ClassLibrary1   然后在 solutionmanager(解决方案资源管理器)中, 将 新创建的 Class1.vb 文件删除。   然后 在  solutionmanager(解决方案资源管理器)中 的项目上点击右键 ,在弹出的菜单上 点击 添加类 ,在弹出的对话框中选择 com类 ,修改类的名称(本例中修改为ComC.vb),后点击 添加 按钮。   则会看到ComC.vb的代码如下:   <ComClass(ComC.ClassId,ComC.InterfaceId,ComC.EventsId)>_   PublicClassComCClassComC   COMGUID#Region"COMGUID"   '这些GUID提供此类的COM标识   '及其COM接口。若更改它们,则现有的   '客户端将不再能访问此类。   PublicConstClassIdAsString="97451265-d75d-4d5a-a39d-6c4b68f8dd99"   PublicConstInterfaceIdAsString="5015b9e7-64e6-4750-8c28-5c51d968f1d6"   PublicConstEventsIdAsString="1afd03f4-5974-445e-8ca2-a8e9be3432d7"   #EndRegion   '可创建的COM类必须具有一个不带参数的PublicSubNew()   '否则,将不会在   'COM注册表中注册此类,且无法通过   'CreateObject创建此类。   PublicSubNew()SubNew()   MyBase.New()   EndSub   EndClass   现在只要在这个类中添加 public的成员即可 ,假如我们添加一个 方法 Northsnow   <ComClass(ComC.ClassId,ComC.EventsId)>_   PublicClassComCClassComC   COMGUID#Region"COMGUID"   '这些GUID提供此类的COM标识   '及其COM接口。若更改它们,则现有的   '客户端将不再能访问此类。   PublicConstClassIdAsString="97451265-d75d-4d5a-a39d-6c4b68f8dd99"   PublicConstInterfaceIdAsString="5015b9e7-64e6-4750-8c28-5c51d968f1d6"   PublicConstEventsIdAsString="1afd03f4-5974-445e-8ca2-a8e9be3432d7"   #EndRegion   '可创建的COM类必须具有一个不带参数的PublicSubNew()   '否则,将不会在   'COM注册表中注册此类,且无法通过   'CreateObject创建此类。   PublicSubNew()SubNew()   MyBase.New()   EndSub   PublicSubNorthsnow()SubNorthsnow(ByValssAsString)   MsgBox(ss)   EndSub   EndClass   然后就可以编译,编译后,在pb中添加如下的代码来调用这个com   intintValue   oleobjectobjOle   objOle=createOLEObject   intValue=objOle.connecttonewobject("ClassLibrary1.ComC")   objOLe.Northsnow("IamNorthsnow")   运行这个程序就会看到效果。   我在C#中没有看到类似的com类.   现在这个棘手的难题解决了之后,工作可以继续了。心理挺高兴的。但是在高兴之余又有一种奇怪的感觉。   VS.net的确的很强。把很多复杂的东西都包装起来帮我们实现。我们在享受轻松的解决难题的时候,距离底层技术却越来越远。不知道是喜是悲。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读