내 작업은 VB.NET 라이브러리를 작성하여 VB6 응용 프로그램과 상호 작용하는 것입니다. 이 VB6 응용 프로그램은 관리되지 않는 COM DLL 몇 가지를 제공합니다.VB.net 프로젝트에서 COM DLL의 IntPtr 값을 설정하십시오.
(tlbimp를 사용하여) interop 유형을 만들고이를 VB.NET 프로젝트의 참조로 추가했습니다.
글쎄, 또한도 (기본) COM DLL을 참조하는 기존의 오래된 VB6 프로젝트 (라이브러리)가,의 그들 COM1.dll
, COM2.dll
및 COM3.dll
를 호출 할 수 있습니다. 는 다음을 수행되는 경우이 오래된 프로젝트는 claMod
라는 "클래스 모듈을"데 : claClass1
이 COM3
및 COM1.MyPointer
및 COM2.MyPointer
의 클래스입니다
Option Explicit
Public Property Set GlobalProp(oObj As claClass1)
Set COM1.MyPointer = oObj
Set COM2.MyPointer = oObj
End Property
유형 System.IntPtr
의이다.
내 질문은 : 해당 개체 (COM1 및 COM2의 인스턴스)를 선언하지 않고이 두 포인터를 설정하는 방법은 무엇입니까 ?? 둘째, 어떻게하면 새 VB.NET 라이브러리에서 동일한 작업을 수행 할 수 있습니까?
포인터가 아닌 참조이며 MyPointer 속성은 claClass1과 호환되는 형식입니다. 귀하의 VB6 예제에서 COM1/2 어딘가에 구체화해야합니다 ... –
@AlexK. 어딘가에 인스턴스화해야합니다. 그렇지만 클래스는 Instancing 속성을 GlobalMultiUse로 설정하여 런타임에 자동으로 인스턴스화됩니다. – BobRodes