VB.NET组件封装实现功能体验

开发 后端
VB.NET组件封装的实现,可以帮助开发人员实现com以供非托管的代码使用。其具体的操作步骤将会在本文中给出,希望对大家有所帮助。

VB.NET的应用到底能帮助我们带来些什么呢?只有在实际应用中才能真正的体会到它强大的功能。下面就先从VB.NET组件封装来看看它的一些主要作用。从这个角度来仔细的分析一下这款编程语言的优点。#t#

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

原来在vs.net 2005中实现VB.NET组件封装是如此的简单。

方法如下:

新建一个项目,选择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 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

现在只要在这个类中添加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  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

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

int intValue   
oleobject objOle   
objOle=create OLEObject  
intValue=objOle.
connecttonewobject
("ClassLibrary1.ComC")  
objOLe.Northsnow
("I am Northsnow")  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

运行这个VB.NET组件封装的实现程序就会看到效果。

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

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

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

 

责任编辑:曹凯 来源: IT168
相关推荐

2010-01-12 10:48:54

VB.NET LIST

2010-01-22 15:25:46

VB.NET Time

2010-01-19 10:03:35

VB.NET Labe

2010-01-22 18:14:49

VB.NET菜单组件

2009-10-20 14:09:05

VB.NET反射功能

2009-11-02 14:48:45

VB.NET HOOK

2010-01-13 09:45:53

VB.NET Arra

2009-11-10 13:27:30

VB.NET RND(

2010-01-22 16:39:46

VB.NET添加自动查

2009-10-15 11:11:08

VB.NET Text

2010-01-22 15:37:02

VB.NET监控类

2009-10-26 09:50:20

VB.NET Star

2009-11-03 11:06:40

VB.NET事件

2009-10-13 10:21:58

VB.NET实现Web

2009-10-12 14:32:40

VB.NET实现定时关

2009-10-23 13:22:25

VB.NET实现拖动图

2010-01-08 15:41:36

VB.NET窗口关闭

2009-10-23 15:35:42

VB.NET实用教程

2009-10-29 14:02:24

VB和VB.NET比较

2011-06-17 11:05:22

VB.NET
点赞
收藏

51CTO技术栈公众号