2009-05-18 103 views
0

问候!如何捕获从新的Popup IE窗口触发的事件

现状:

我的ActiveX DLL包含一个网页浏览器定制。网页浏览器显示一个网页。当用户点击显示页面中的链接时,会弹出一个新的IE窗口并导航到点击的链接URL。

问:

我如何可以捕获从NEW弹出IE窗口发射的DocumenComplete和NavigateComplete事件?

我已经尝试过:

我试图捕捉 * NewWindow2(IDispatch接口** ppDisp, VARIANT_BOOL 取消) 事件从定制的浏览器上(不是新的IE窗口)解雇,并获得指向新的IE windown的指针ppDisp。我试图使用这个指针作为事件源来建议或连接到事件处理程序(IDispatch :: Invoke)以进行事件捕获。但它不起作用。也许失败是因为新IE窗口中的文档尚未加载。我不确定。

你能给我一个建议我应该怎么做?

谢谢!

回答

1

您不能在ppDisp中获得新的Web浏览器。您创建一个,接收事件,并将其应用程序属性返回到事件ppDisp中。

+0

能否请您阐述一下从ppDisp获得新的web浏览器的指针,创造新的有什么区别?根据MSDN,ppDisp是指针接收新WebBrowser对象的IDispatch接口指针。 – bionicoder 2009-05-21 06:41:56

+0

正如我所说,您不会从ppDisp获取新的Web浏览器。您创建一个新的Web浏览器控件,吸收其事件并获取其应用程序属性。将应用程序属性的返回值放入ppDisp中。 – 2009-10-22 23:52:47

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(); 

}

相关问题