2010-03-09 4 views
1

런타임에 COM 노출 인터페이스 메서드를 하나씩 호출 할 수 있습니까? 이것은 반사를 사용하는 Win32 DLL의 경우에 달성 될 수 있지만 COM.dll 또는 COM.exe로 동일한 작업을 수행해야합니다. 해당 COM.dll 또는 COM.exe의 모든 노출 된 메서드를 볼 수 있으며 모든 코드를 하나씩 호출해야합니다 (VC++ 비 관리 코드로 작성된 비 관리 코드를 호출해야 함). 아니 수 있습니다. NET 어셈블리).COM DLL 또는 COM EXE의 메소드를보고 런타임에 하나씩 호출 할 수 있습니까? (Reflections 사용)

감사합니다,

우스만

답변

1

대상 COM 개체가 IDispatch 인터페이스 당신의 typelibrary를 읽고 동적으로 메서드를 호출 할 수있는 기능을 지원하는 경우. 그러나 메소드가 어떤 인수를 취해야한다면 무엇을 전달해야할지 파악해야합니다.

+0

및 COM 개체 suuports IUnknown 인터페이스의 경우 ...? 내 대부분의 COM 바이너리는 IUnknown 인터페이스 만 지원합니까? – Usman

+0

글쎄, 왜 당신이 구성 요소의 typelib을 읽을 수 없는지, 구현 된 각 인터페이스에 대해 각 CoClass, QueryInterface를 인스턴스화하고 하나씩 차례로 호출하는 메소드 (vtable을 통해)를 반복합니다. 물론이 방법은 구성 요소에 형식 라이브러리가 있고 일부 ** 재미 ** 코드가 필요하다고 가정합니다. – Vagaus