C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[18568] Re:빌더에서 Sink Event를 받으려면
새더군 [mmouse] 1292 읽음    2002-05-16 13:54
비슷한 작업을 해본적이 있긴한데..
범용적으로 사용할수 있는 방법인지 아직 검증되지 않았습니다.

작동하고 있는 웹브라우져의 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 ---

+ -

관련 글 리스트
18528 빌더에서 Sink Event를 받으려면 gongnim 787 2002/05/15
18568     Re:빌더에서 Sink Event를 받으려면 새더군 1292 2002/05/16
18586         Re:Re:빌더에서 Sink Event를 받으려면 gongnim 1245 2002/05/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.