在为NewWindow3处理打开另一个嵌入式IWebBrowser2时,会话在嵌入式IWebBrowser2中过期



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

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

而弹出确实打开所需的网站,会话在原来的窗口,从这个弹出窗口被打开,过期-任何进一步的导航在原来的窗口需要回到登录页面!

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

  1. 这只发生在NewWindow3被触发时,bstrUrlContext是非空的(第三个参数包含原始URL)
  2. 作为NewWindow3处理的一部分,完成了以下操作
    • 创建新的iwebbrowser2嵌入窗口,Create() ', zWindowName设置为bstrUrlContext参数的值
    • 返回的IDispatch指针取自IWebBrowser2->get_Application()

此问题已解决。

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

谢谢

相关内容

  • 没有找到相关文章

最新更新