如何为多个选项卡/窗口运行工具栏的单个实例

Posted

技术标签:

【中文标题】如何为多个选项卡/窗口运行工具栏的单个实例【英文标题】:How to run single instance of toolbar for mutiple tabs/window of ie 【发布时间】:2012-12-04 13:53:55 【问题描述】:

我在 VC++ 中开发了一个 Internet Explorer 工具栏,用户需要在其中登录,然后我只需在菜单中更新该用户的详细信息,但每当我更改选项卡时,工具栏就会注销。 如何停止为每个选项卡运行单独的工具栏实例。

【问题讨论】:

【参考方案1】:

工具栏是进程内的 COM 服务器,IE 本身对选项卡使用进程隔离。要使您的状态数据在选项卡关闭/崩溃时仍然存在,您需要将其移出 IE 进程并进入代理进程。您可以通过进程间通信方法之一(例如命名管道)询问代理进程来获取状态数据。

要在选项卡之间同步状态,请将数据保存到旧选项卡的 DWebBrowserEvents2 ::WindowStateChanged event handler 中的代理进程,并在新选项卡的 DWebBrowserEvents2 ::WindowStateChanged 事件处理程序中向代理进程询问状态数据。

【讨论】:

感谢您的回答,但我不明白,您能否提供任何示例或任何内容,因为我对此很陌生。 检查 codeproject.com/Articles/18866/… 以获取代理进程的示例。 Jiang:谢谢,我对IE事件还有一个疑问。如何区分IE标签关闭和IE关闭。两者都会触发相同的DISPID_ONQUIT事件。 清理的地方在IObjectWithSite::SetSite。没有界面可以区分选项卡关闭和窗口关闭(注意,当您关闭窗口时,IE 可能仍然有另一个窗口和它自己的代理进程在运行)

以上是关于如何为多个选项卡/窗口运行工具栏的单个实例的主要内容,如果未能解决你的问题,请参考以下文章

如何为 chrome 上的每个选项卡获取不同的徽章值?

如何为 django 管理员创建选项卡?

反应导航如何为每个选项卡动态更改标题导航标题?

如何为Web浏览器选项卡设置个人标题?

具有单个选项卡形式的多个表

控制单个 UIWebview 的多个选项卡