![]() |
|
||||||||||||||
| | 网站首页 | 数据库教程 | web编程 | 服务器 | 程序设计 | | ||
|
||
|
||||||
| vb.net 封装 组件 成 com的方法 | ||||||
作者:佚名 文章来源:不详 点击数: 更新时间:2007-9-12 ![]() |
||||||
|
前几天一直在研究如何将.net的组件封装成com供非托管代码调用。
原来在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的确的很强。把很多复杂的东西都包装起来帮我们实现。我们在享受轻松的解决难题的时候,距离底层技术却越来越远。不知道是喜是悲。 本文来源:http://blog.csdn.net/precipitant/archive/2007/09/07/1775964.aspx
|
||||||
| 文章录入:admin 责任编辑:admin | ||||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | ||||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 网站地图 | 管理登录 | | |||
|