2010-02-11 10 views
6

COM 개체의 이벤트에 연결하려고 시도 할 때 COM 예외가 발생합니다. 다음은 실행하려는 코드입니다.이벤트에 후킹 할 때 C#에서 COMException이 발생했습니다.

함께 System.Runtime.InteropServices.COMException이 잡힌

메시지 = "HRESULT에서 예외 : 0x80040202"

COMClass a = IComClass as ComClass;
a.SomeEvent += new SomeEvent_EventHandler(MethodNameHere);

라인이 다음과 같은 정보를 입력 COMException의 예외가 발생합니다

출처 = "mscorlib"

ErrorCode = -2147220990

스택 트레이스 : System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise에서 (객체 pUnkSink, INT32 & pdwCookie)

사람이 있다면 나는 COM 이벤트에 후크 드릴 수 없습니다 또는 왜 어떤 아이디어가 있습니까 COM 이벤트에 연결하기위한 해결 방법은 무엇입니까?

크리스

답변

3

당신이있어 오류 코드가 CONNECT_E_CANNOTCONNECT 잘 구글의 무언가이다. COM 서버가 이벤트 처리기를 구독하려는 시도에 만족하지 않음을 나타냅니다. 왜 그렇지 않은지 알아 내야합니다. 구성 요소 작성자 또는 공급 업체로부터 도움을 얻는 것이 거의 항상 요구됩니다.

시도해 볼 수있는 한 가지 방법은 Oleview.exe를 사용하여 형식 라이브러리를보고 구독하려는 이벤트가 기본 소스 인터페이스로 표시된 디스패치에 있는지 확인하는 것입니다. 그렇지 않은 경우 객체를 dispinterface 유형으로 캐스팅 한 다음 해당 이벤트를 구독하십시오.

4

이벤트에 대한 인터페이스가 등록되지 않은 것이 문제였습니다. 이벤트 인터페이스의 레지스트리 키를 추가하면 문제가 해결되었습니다. OLEViewer.exe를 사용하여 인터페이스 ID 정보를 얻을 수있었습니다.

관련 문제