2010-05-13 2 views
0

C# .NET에서 관리되지 않는 COM 코드를 호출해야합니다. 관리되지 않는 COM 형식 라이브러리를 (LoadTypeLibEx)에서로드하여 COM TLB에서 노출 된 모든 형식을 반복 할 수 있습니다. 나는 런타임에 노출 된 메소드를 호출하거나 COM vtable의 시작 주소에 액세스하여 인터페이스 아래 노출 된 메소드의 주소를 얻기 위해 색인을 적용하여 주소를 알아야합니다.ITypeLib 및 ITypeInfo를 사용하여 C# .NET에서 COM 관리되지 않는 코드를 런타임에 호출하는 방법?

+0

가능한 중복이 프록시 서비스를 사용하는 것보다

이 방법의 고정 된 집합을 사용하여, 당신을 위해 그렇게 할 것입니다 프록시 관리되지 않는 COM 서버 만들기 [방법 COM vtable에 액세스하고 C#의 TLB (유형 라이브러리)에서 항목을 액세스 할 수 있습니까?] (http://stackoverflow.com/questions/2818418/how-to-access-com-vtable-and-acess-its-entries-from) -tlbtype-library-in-c) –

+0

그래, 내 문제에 대한 올바른 해결책을 찾지 못했기 때문에 다른 좋은 방법으로 스레드를 다시 열었다. – Usman

답변

0

그냥 제안 : 당신의 C# 응용 프로그램에서의

+0

프록시 관리되지 않는 COM 서버를 작성하는 것은 매우 어려울 것입니다. DLL/EXE로 관리되지 않는 바이너리 인 모든 COM EXE/DLL에 대한 코드 생성을 수행 할 필요가 없습니다. 모두 내가 런타임에 노출 된 메서드와 모든 종류의 에뮬레이션해야하고 런타임에 vtable에서 자신의 주소에 액세스하여 노출 된 메서드를 호출해야합니다. 코드 생성이 없음 – Usman

+0

하나의 com 서버가 있지만 요청 된 dll에 대한 모든 유형과 메소드를 열거 할 수있는 기능이 있습니다. ATL을 사용하여 COM 개체 (IDispatch) 메서드를 열거할까요? http://stackoverflow.com/questions/2112302/enumerate-com-object-idispatch-methods-using-atl – volody

+0

가능하면 관리되지 않는 코드로 수행 할 수 있다고 생각한 다음 COM을 통해이 정보를 C# 클라이언트에 제공하십시오. interface – volody

관련 문제