我正在开发一个多线程的基于web的应用程序,它可以打开多个浏览器窗口,每个窗口都有自己的嵌入式IWebBrowser2实例用于浏览,并且每个窗口都在一个单独的UI线程中。
作为对NewWindow3的响应,我打开一个新的浏览器窗口,并返回新窗口的IWebBrowser2->get_Application()
,它返回一个IDispatchPtr
。
而弹出确实打开所需的网站,会话在原来的窗口,从这个弹出窗口被打开,过期-任何进一步的导航在原来的窗口需要回到登录页面!
一些我认为可能对任何人帮助我很重要的要点-
- 这只发生在
NewWindow3
被触发时,bstrUrlContext
是非空的(第三个参数包含原始URL) - 作为NewWindow3处理的一部分,完成了以下操作
- 创建新的iwebbrowser2嵌入窗口,
Create()
',zWindowName
设置为bstrUrlContext
参数的值 - 返回的
IDispatch
指针取自IWebBrowser2->get_Application()
- 创建新的iwebbrowser2嵌入窗口,
此问题已解决。
我必须用空字符串(_T(")) WindowName创建嵌入iwebbrowser2的窗口。并且必须通过在窗口的OnCreate()处理程序(用于WM_CREATE)中调用CAxWindow::CreateControl()来确保IWebBrowser2控件的创建
谢谢