我的任务是编写一个VB.NET库来与一块VB6应用程序进行交互。这个VB6应用程序提供了一些非托管的COM DLL。
我创建了互操作类型(通过使用tlbimp)并在我的VB.NET项目中添加它们作为参考。
好吧,还有一个旧的VB6项目(库)存在,它也引用了(本机)COM DLL,让我们调用它们
COM1.dll
,COM2.dll
和COM3.dll
。
这个旧项目有一个"类模块"调用claMod
,执行以下操作:
Option Explicit
Public Property Set GlobalProp(oObj As claClass1)
Set COM1.MyPointer = oObj
Set COM2.MyPointer = oObj
End Property
其中claClass1
是COM3
中的一个类,而COM1.MyPointer
和COM2.MyPointer
的类型为System.IntPtr
。
我的问题是:如何设置这两个指针而不声明相应的对象(COM1和COM2的实例)?其次,我如何在新的VB.NET库中做同样的事情?
答案 0 :(得分:1)
要允许引用COM1和COM2而不专门实例化它们,请将每个类的Instancing属性设置为GlobalMultiUse。然后,您在帖子中的代码将无需创建对它的引用即可运行。
VB6环境中已经运行了很多这样的对象; Screen
对象是一个熟悉的例子。
这与在VB.Net中声明Shared
类或在C#中声明static
类基本相同。