2009-05-18 4 views
0

인사말!새 팝업 IE 창에서 발생한 이벤트를 캡처하는 방법

상황 :

내에서 ActiveX DLL은 사용자 정의 웹 브라우저가 포함되어 있습니다. 웹 브라우저는 웹 페이지를 표시합니다. 사용자가 표시된 페이지 내의 링크를 클릭하면 새 IE 창이 팝업되고 클릭 된 링크 URL로 이동합니다.

질문 :

어떻게는 IE 창을 팝업 NEW에서 발사 DocumenComplete 및 NavigateComplete 이벤트를 캡처 할 수 있습니까?

나는 사용자 정의 웹 브라우저 (새로운 것은 IE 창)에서 발사 이벤트를 * NewWindow2 (의 IDispatch ** ppDisp, VARIANT_BOOL 취소) 캡처 시도하고 얻을 : 이미 시도 무엇

새로운 IE 윈도우를 가리키는 포인터 ppDisp. 이 포인터를 이벤트 소스로 사용하여 이벤트 캡처를 위해 이벤트 처리기 (IDispatch :: Invoke)에 조언하거나 연결할 수 있습니다. 그러나 그것은 작동하지 않습니다. 아마도 새 IE 창의 문서가 아직로드되지 않았기 때문일 수 있습니다. 나는 잘 모르겠다.

내가 무엇을해야하는지 제안 해 주시겠습니까?

감사합니다.

답변

1

ppDisp에서 새 웹 브라우저를 얻지 못합니다. 하나를 만들고 이벤트를 싱크 한 다음 ppDisp의 해당 응용 프로그램 속성을 이벤트로 반환합니다.

+0

당신이 ppDisp에서 새로운 웹 브라우저의 포인터를 취득하고 새로운 하나를 만드는 차이에 정교한시겠습니까? MSDN에 따르면 ppDisp는 새 WebBrowser 개체의 IDispatch 인터페이스 포인터를받는 포인터입니다. – bionicoder

+0

내가 말했듯이, 당신은 ppDisp에서 새로운 웹 브라우저를 얻지 못한다. 새 웹 브라우저 컨트롤을 만들고 이벤트를 싱크하고 응용 프로그램 속성을 가져옵니다. 응용 프로그램 속성의 반환 값을 ppDisp에 넣습니다. –

1
void CYourDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) 
{ 
    CDlgNewWB* dlgNewWB = new CYourDlg; 
    this.listDialogWeb.Add(dlgNewWB); 
    dlgNewWB ->Create(IDD_WBDLG_DIALOG); 

    dlgNewWB ->m_webBrowser.SetRegisterAsBrowser(TRUE); 

    *ppDisp = dlgNewWB ->m_webBrowser.GetApplication(); 

}

관련 문제