|
비슷한 작업을 해본적이 있긴한데..
범용적으로 사용할수 있는 방법인지 아직 검증되지 않았습니다.
작동하고 있는 웹브라우져의 IWebBrowser2 인터페이스를 가져와 보겠습니다.
먼저 실행중인 인터넷익스플로러서버의 윈도우 핸들이 있어야 합니다.
LRESULT lr;
IUnknown * pUnknown;
UINT uMsg = RegisterWindowMessage("WM_HTML_GETOBJECT");
SendMessageTimeout(hWnd, uMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, (DWORD *) &lr);
ObjectFromLresult(lr, IID_IUnknown, 0, (void **)&pUnknown);
정상적으로 실행이 되었다면 pUnknown 를 통해 IWebBrowser2 에
일반적인 방법(ServiceProvider)으로 접근 가능합니다.
이제 여기서 구해진 IWebBrowser2 를 통해 IConnectionPointContainer 를 가져옵니다.
컨테이너에서 원하는 이벤트의 IConnectionPoint 를 가져 온다음..
직접 작성하진 IDispatch의 포인터를 Advise 해주시면 됩니다.
그럼 좋은하루 되세요.. ^^;..
P.S : 저런결과를 통해서 얻어온 인터페이스에서는 Reading 만 가능하더군요.. --;
gongnim 님이 쓰신 글 :
: 빌더에서 외부 COM객체의 인터페이스를 구해서 Sink Event를 받으려면 어떻게 해야하나요?
: 외부 COM객체에 이벤트를 줄 수는 있겠는데, 이벤트를 받아오는 방법은 도무지 모르겠군요.
: 어느 책을 봐도 외부 COM객체가 아닌 내부 COM객체의 이벤트를 받아오는것만 있으니....
: 답변 기다리겠습니다.
:
: --- Change World ---
|