2014-04-29 11 views
4

우리 회사는 여러 COM 개체를 만들고 .NET에서 행복하게 사용하고 있습니다. 그러나 이제 고객은 Java로 변경하려고합니다. JACOB이나 j-interop을 사용하는 것이 흥미로울 것이라고 생각했는데 (일부는 잘 모르겠다) 일부 작업에서는 결과가 꽤 복잡했다. 그래서 COM 라이브러리의 TypeLib을 읽고 모든 관리하기 어려운 코드를 숨기기위한 Java 래퍼 클래스를 생성 할 수있는 도구를 작성하려고합니다.C# 또는 C++로 COM TypeLib을 읽는 방법?

저는 COM 세계에서 초보자입니다. 따라서 COM 개체를 설명하는 인터페이스, 메서드 및 매개 변수에 대한 정보를 얻는 방법을 모르겠습니다. TypeLib라는 것을 읽었지만 읽는 법을 모르겠습니다. 어떻게 정보를 얻을 수 있습니까?

답변

4

공식 API는 Type Description Interfaces입니다.

C++에서 직접 사용할 수 있지만 .NET (C#은 내 샘플)에서 Microsoft가 오래 전 작성한 추가 도구 (내 이름은 1997 년) TLBINF32.DLL을 사용하는 것이 좋습니다. 또한 COM 개체이지만 자동화 (VBScript, Javascript, VB/VBA) 및 .NET 호환입니다.

당신은 TLBINF32.DLL 인터넷 검색을 찾을 수 있습니다 (이 링크는 오늘 작동하는 것 같습니다 : tlbinf32.dll download, 그들이 "해결사"라고 부르는 것이 아니라 .ZIP 파일을 가져 왔는지 확인하십시오 ...). 32 비트 DLL이므로 프로그램을 32 비트로 컴파일해야 사용할 수 있습니다. 나는 64 비트 버전을 모른다.

이 라이브러리를 사용하는 방법은 2000 년 12 월 MSDN Magazine 기사에서 Inspect COM Components Using the TypeLib Information Object Library에 자세히 설명되어 있습니다. 그것은 VB (.NET이 아니라) 지향이지만, .NET 용어로 변환하는 것은 꽤 쉽습니다.

class Program 
{ 
    static void Main(string[] args) 
    { 
     TypeLibInfo tli = new TypeLibInfo(); 
     tli.ContainingFile = @"c:\windows\system32\mshtml.tlb"; 
     foreach (TypeInfo ti in tli.TypeInfos) 
     { 
      Console.WriteLine(ti.Name); 
      // etc... 
     } 
    } 
} 
: 여기

단지 형 LIB (여기 MSHTML.tlb에)에서 모든 종류의 정보를 덤프 C#에서 샘플 콘솔 응용 프로그램입니다