私の仕事は、VB6アプリケーションと対話するためのVB.NETライブラリを作成することです。このVB6アプリケーションは、いくつかのアンマネージCOM DLLを提供します。VB.netプロジェクトでCOM DLLのIntPtr値を設定する
(tlbimpを使用して)interop型を作成し、VB.NETプロジェクトの参照として追加しました。
まあ、これも(ネイティブ)COM DLLを参照している既存の古いVB6のプロジェクト(ライブラリ)、があり、のは彼ら COM1.dll
、COM2.dll
とCOM3.dll
を呼びましょう。
claClass1
は
COM3
と
COM1.MyPointer
にクラスであり、
COM2.MyPointer
はタイプ
System.IntPtr
である
Option Explicit
Public Property Set GlobalProp(oObj As claClass1)
Set COM1.MyPointer = oObj
Set COM2.MyPointer = oObj
End Property
: この古いプロジェクトでは、「クラスモジュール」は、それが次のことをやっているclaMod
と呼ば持っています。
私の質問は:どのように対応するオブジェクト(COM1とCOM2のインスタンス)を宣言せずにこれら2つのポインタを設定することは可能ですか?第二に、私は新しいVB.NETライブラリでどうやって同じことをすることができますか?
これらは参照ではなく、MyPointerプロパティはclaClass1と互換性のある型です。あなたのVB6の例では、COM1/2はどこかでインスタンス化されなければなりません... –
@AlexK。インスタンス化する必要がありますが、インスタンス化プロパティをGlobalMultiUseに設定すると、クラスは実行時に自動的にインスタンス化されます。 – BobRodes