zoukankan      html  css  js  c++  java
  • vb.net 封装 组件 成 com的方法

    前几天一直在研究如何将.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 ComC

    COM GUID

        
    ' 可创建的 COM 类必须具有一个不带参数的 Public Sub New() 
        ' 否则, 将不会在 
        ' COM 注册表中注册此类,且无法通过
        ' CreateObject 创建此类。
        Public Sub New()
            
    MyBase.New()
        
    End Sub


    End Class

    现在只要在这个类中添加 public 的成员即可 ,假如我们添加一个 方法 Northsnow

    <ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
    Public Class ComC

    COM GUID

        
    ' 可创建的 COM 类必须具有一个不带参数的 Public Sub New() 
        ' 否则, 将不会在 
        ' COM 注册表中注册此类,且无法通过
        ' CreateObject 创建此类。
        Public Sub New()
            
    MyBase.New()
        
    End Sub

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

  • 相关阅读:
    jquery 添加关键字小插件
    打印出所有每一位都与其他位不重复的自然数
    尾递归版,斐波那契数列
    如何在移动端宽度自适应实现正方型?
    css隐藏元素的六类13种方法
    如何给行内元素设置宽高?
    css实现垂直水平居中的方法
    pwa
    目录树生成工具treer
    服务端返回的json数据,导致前端报错的原因及解决方法
  • 原文地址:https://www.cnblogs.com/gxlinhai/p/1006069.html
Copyright © 2011-2022 走看看