在VB.net项目中设置COM DLL的IntPtr值

时间:2017-12-04 14:01:46

标签: vb.net dll vb6

我的任务是编写一个VB.NET库来与一块VB6应用程序进行交互。这个VB6应用程序提供了一些非托管的COM DLL。

我创建了互操作类型(通过使用tlbimp)并在我的VB.NET项目中添加它们作为参考。

好吧,还有一个旧的VB6项目(库)存在,它也引用了(本机)COM DLL,让我们调用它们 COM1.dllCOM2.dllCOM3.dll。 这个旧项目有一个"类模块"调用claMod,执行以下操作:

    Option Explicit
    Public Property Set GlobalProp(oObj As claClass1)
            Set COM1.MyPointer = oObj
            Set COM2.MyPointer = oObj
    End Property

其中claClass1COM3中的一个类,而COM1.MyPointerCOM2.MyPointer的类型为System.IntPtr

我的问题是:如何设置这两个指针而不声明相应的对象(COM1和COM2的实例)?其次,我如何在新的VB.NET库中做同样的事情?

1 个答案:

答案 0 :(得分:1)

要允许引用COM1和COM2而不专门实例化它们,请将每个类的Instancing属性设置为GlobalMultiUse。然后,您在帖子中的代码将无需创建对它的引用即可运行。

VB6环境中已经运行了很多这样的对象; Screen对象是一个熟悉的例子。

这与在VB.Net中声明Shared类或在C#中声明static类基本相同。