2009-09-23 4 views
2

C# 응용 프로그램에서 일부 COM interop을 수행하는 중이고 이에 대한 대답을 찾을 수 없습니다.COM 인터페이스 구현 자용 문서

COM 인터페이스의 구현을 구체화하는 Win32 설명서에서 어디에서 찾을 수 있는지 궁금합니다. 예를 들어, IShellLinkW는 CLSID_ShellLink에 의해 식별되는 클래스에 의해 구현되고, IObjectArray는 CLSID_EnumerableObjectCollection에 의해 구현된다는 것을 알고 있습니다.

하지만 어떻게 알 수 있습니까? Windows SDK (최신) 버전이 설치되어 있으며 문서의 정보를 기반으로 어떻게 파악했는지 머리를 감쌀 수없는 것 같습니다.

답변

0

시스템에있는 모든 COM 객체를로드하지 않고 원하는 클래스가 무엇인지 생각하고 클래스의 목록과 구현하는 인터페이스를 묻지 않아도됩니다. 내가 아는 한이 정보는 레지스트리에 저장되지 않습니다 (모든 외부 COM 정보가 저장되는 장소).

달성하려는 목표에 대한 구체적인 예를 제시 할 수 있다면 다른 대안이 될 수 있습니다. 특정 클래스 또는 .dll에 의해 구현 된 인터페이스를 알고 싶다면 oleview

1

왜 알아야합니까? tlbimp.exe와 같은 가져 오기 유틸리티는 exe 또는 dll 유형 정보에서 필요한 세부 정보를 파악하고이를 처리하는 래퍼를 만듭니다. COM Interop Part 1: C# Client Tutorial에서 TlbImp 예에서

봐 :

+0

과 같은 몇 가지 수동 interop 선언을 수행하고 있습니다. 어떻게하면 일들이 어떻게 작동하는지 알 수 있습니다. 그래서 질문은 남아 있습니다. 주어진 com 인터페이스를 사용하여 구현하는 클래스를 알 수 있습니까? 그래서 무엇을 만들지 알 수 있습니다 .. – TheCodeJunkie

+0

PE 이미지에 COM 용 리소스가 있습니다. 지원되는 CLSIID W IID (TypeLib)를 설명합니다. regsrv와 같은 도구는 레지스트리에 필요한 정보를 추가 할 수 있습니다. TlbImp와 같은 도구는이를 사용하여 래퍼 (wrapper) 또는 관리되는 dll을 만듭니다. 또한 설치 관리자는이 정보를 데이터베이스에 저장하고 (http://msdn.microsoft.com/en-us/library/aa372092%28VS.85%29.aspx 참조) 레지스트리에 추가 정보를 추가하십시오. –

+0

전체 관리되는 interop 시나리오를 보자. 질문과 관련이 없으며 (일부 배경 이었음) IDL 파일, 형식 라이브러리, 가져 오기 도구 등을 모두 알고있다. 나는 새롭고 열망하는 C++ 개발자, 구체적인 클래스에 대해 알고 있습니까? 내가 문서를 읽고 IShellLinkW 인터페이스를보고 "Hmm cooool, 나는 그것을 사용하고 싶다"라고 말하면, CLSID_ShellLink의 인스턴스를 만드는 방법을 어떻게 알 수 있습니까? 또는 더 모호한, IObjectArray/IObjectColleciton -> CLSID_EnumerableObjectCollection? 문서의 어딘가에서 언급해야하지만 어디에 있습니까? :) thanks – TheCodeJunkie

0

표준 COM 대부분의 IID에와 CLSID가이 윈도우 SDK에 포함 uuid.lib에 나와있는 객체. 그래서 당신은 그들을 인쇄 간단한 애플 리케이션을 작성할 수 있습니다.

또한 regedit를 열고 HKCR \ Interface로 이동하여 거기에서 레코드를 분석 할 수 있습니다.