网站首页

家园论坛

老版论坛

家园博客

业界新闻

技术文档

下载中心

速查中心

图片中心

硬件资讯
上一篇:ASP.NET中“找不到指定模块”的解决办法 下一篇:vb.net开发中使用excel插件的代码
.NET组件和COM组件之间的相互操作

来源: 作者: 添加日期:2007-10-12 16:34:15 点击次数:


  还没有结束呢,接下来我们需要: 

  切换到MS-DOS命令行下面,运行: 

  C:\>tlbExp ClassLibrary1.dll /out:ClassLibrary1.tlb 

  上面的命令行表示将会产生一个.NET组件的类型库,目的是为了我们在COM组件中进行提前绑定操作。 

  好了,接下来我们就可以在自己的基于目前COM技术的代码中方便的使用上面我们使用C#编写的.NET组件了。在这里,我们使用VB6.0编写一个小小的 测试代码,在开始之前我们需要在VB的集成环境中使用菜单中的“引用”选项,选择我们刚才产生的类型库文件ClassLibrary1.tlb。 

  VB测试的代码如下: 

  Private Sub Form_Load() 

  Dim test As New ClassLibrary1.hello 

  Dim str As String 

   

  str = test.say("dddd") 

  MsgBox str 

  End Sub 

  接下来,我们就来看看,如何在.NET组件中使用目前存在的COM组件吧。 

  对于.NET来讲,使用COM组件要想对简单一些。.NET在设计之初就考虑到了如何方便的利用现有的各种技术资源,这也是微软的一贯作风,.NET的强 大之处也可见一斑。.NET提供了大量的类库来方便的实现同COM的相互操作,其中很重要的一个名称空间就是: System.Runtime.InteropServices。通过这个名称空间的名字我们也可以从字面上看出,“互操作服务”。 System.Runtime.InteropServices这个名称空间提供了一系列的类来对COM对象进行操作。 

  下面的例子中,我们来调用一下系统自带的Win32函数MessageBoxA,这个函数位于系统的COM组件user32.dll当中,我们调用的代码如下: 

  using System; 

  using System.Runtime.InteropServices; 

  class Test 

  { 

  [DllImport("user32.dll")] 

  public static extern int MessageBoxA(inthWnd,string strMsg,string strCaption,intnType); 

  public static void Main() 

  { 

  int myMsg; 

  myMsg=MessageBoxA(0,"Hello!","test",0); 

  } 

  } 

  切换到MS-DOS命令行下面,运行: 

  C:\>csc Test.cs 

  编译完毕我们的C#应用程序之后,直接运行就可以看到对话框了! 

  需要注意的是,在调用COM组件之前,我们需要在.NET程序中引用名称空间:System.Runtime.InteropServices。因为我们需要使用这个名称空间所提供的一个方法:DllImport。 

  怎么样,在.NET中使用COM组件是非常的方便的吧。上面是我们调用的系统本身自带的DLL组件,同样的,也可以使用这种方法来调用我们自己使用VB/VC编写的COM组件。 

  好了,我们已经探讨完了如何在.NET和COM之间相互操作了,我们也很显然的看到了.NET技术的强大,现在越早掌握.NET技术就会在未来越容易的占领领先的位置,让我们共同努力掌握强大的.NET平台技术吧。 

  (以上程序在Windows2000 server+VS.NET Beta2下测试通过)

本新闻共2页,当前在第2页  1  2  

 
设为首页 | 加入收藏 | 业务办理 | 友情链接 | 论坛版面 | 浙ICP备07502118号 |