我正在开发一个基于多线程 WTL 的应用程序,它可以打开多个浏览器窗口,每个窗口都有自己的嵌入式 IWebBrowser2 实例用于浏览,每个窗口都在一个单独的 UI 线程中。
作为对 NewWindow3 的响应,我打开一个新的浏览器窗口,并返回新窗口IWebBrowser2->get_Application()
,它返回一个IDispatchPtr
.
虽然弹出窗口确实打开了所需的站点,但打开此弹出窗口的原始窗口中的会话 EXPIRES - 该原始窗口中的任何进一步导航都将返回登录页面!
我认为可能对任何人帮助我很重要的一些要点-
- 仅当
NewWindow3
触发时才会发生这种情况,并且非空bstrUrlContext
(包含原始 URL 的第三个参数) - 作为 NewWindow3 处理的一部分,完成以下操作 -
- 创建新的 IWebBrowser2 嵌入窗口,
Create()
设置zWindowName
为bstrUrlContext
参数的值 - 返回的
IDispatch
指针是从IWebBrowser2->get_Application()
- 创建新的 IWebBrowser2 嵌入窗口,