【问题标题】:Multiple tabs in IE7 with one instance of the toolbarIE7 中的多个选项卡与工具栏的一个实例
【发布时间】:2010-11-02 06:12:46
【问题描述】:

我用 C# 为 Internet Explorer 开发了一个工具栏,用于从外部应用程序发送和接收 URL。它在 IE6 中运行良好,但我想在新版本 (IE7) 中利用选项卡式浏览,但我在那里遇到了障碍。似乎在 IE7 中,每个选项卡都算作一个单独的实例,因此我的工具栏也是一个单独的实例。

在我的一生中,我找不到让单个实例出现在单个 IE 窗口中的每个选项卡上的方法。我所能做的就是注册为 ROT 的 com 对象,让每个实例通信并镜像所有其他实例,但这似乎不必要地复杂。有没有人找到解决方法?

【问题讨论】:

  • 这在 IE 8 中会更加困难,因为每个选项卡可能在不同的进程中运行。
  • 确实,在 Firefox 中它要容易 100 倍。我很惊讶存在这样的障碍。我希望 MS 能够为标签式浏览提供更好的 API,但它似乎不存在。
  • 单独实例用于防止一个浏览器窗口崩溃整个浏览器。铬做同样的事情。这是否是一件好事值得商榷。
  • 您需要同时激活每个选项卡吗?如果没有,也许您可​​以尝试一次将 URL 流量隔离到一个选项卡,并让外部应用程序同步数据。

标签: c# internet-explorer


【解决方案1】:

因为你没有说太多关于你的工具栏在做什么,我假设当你打开多个选项卡时,它会占用一些资源...内存、网络、远程源上的连接等等。

与其确保只有一个实例在运行,我的建议是通过监听 WindowStateChanged 事件来跟踪哪个选项卡处于活动状态,然后您可以做很多事情:

  • 在通讯不活动时关闭通讯。
  • 通知远程源该选项卡未处于活动状态。
  • 仅不在非活动标签中显示通知。
  • 停止工具栏中正在运行的所有线程。

【讨论】:

    【解决方案2】:

    在我看来,您想要一个 mutex,只允许应用程序的一个实例,或者可能 - 一个应用程序实例提供您工具栏的所有实例。

    您可以查看msdn 了解同步问题。

    罗伯特哈维是正确的,这已成为标准,但getting IE urls from multiple instances appears rather painless

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多