0

我正在开发一个基于多线程 WTL 的应用程序,它可以打开多个浏览器窗口,每个窗口都有自己的嵌入式 IWebBrowser2 实例用于浏览,每个窗口都在一个单独的 UI 线程中。

作为对 NewWindow3 的响应,我打开一个新的浏览器窗口,并返回新窗口IWebBrowser2->get_Application(),它返回一个IDispatchPtr.

虽然弹出窗口确实打开了所需的站点,但打开此弹出窗口的原始窗口中的会话 EXPIRES - 该原始窗口中的任何进一步导航都将返回登录页面!

我认为可能对任何人帮助我很重要的一些要点-

  1. 仅当NewWindow3触发时才会发生这种情况,并且非空bstrUrlContext(包含原始 URL 的第三个参数)
  2. 作为 NewWindow3 处理的一部分,完成以下操作 -
    • 创建新的 IWebBrowser2 嵌入窗口,Create()设置zWindowNamebstrUrlContext参数的值
    • 返回的IDispatch指针是从IWebBrowser2->get_Application()
4

1 回答 1

0

此问题已得到解决。

我必须使用空字符串 (_T("")) WindowName 创建嵌入 IWebBrowser2 的窗口。并且必须通过在窗口的 OnCreate() 处理程序中调用 CAxWindow::CreateControl() 来确保创建 IWebBrowser2 控件(对于 WM_CREATE)

谢谢

于 2013-01-24T08:55:19.833 回答