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

时间:2009-05-18 23:46:00

标签: c++ activex browser mshtml

问候!

情况:

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

问题:

如何捕获从弹出的IE窗口中触发的DocumenComplete和NavigateComplete事件?

我已尝试过的内容:

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

你能告诉我一些我应该做的事吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您没有在ppDisp中获取新的Web浏览器。您可以创建一个,接收事件,并将其在ppDisp中的应用程序属性返回给事件。

答案 1 :(得分: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();

}