IE7中的多个选项卡,带有一个工具栏实例

时间:2009-06-11 19:27:25

标签: c# internet-explorer

我在C#中开发了一个Internet Explorer工具栏,用于从外部应用程序发送和接收URL。它在IE6中运行得很好,但我想在新版本(IE7)中利用标签式浏览,但我遇到了麻烦。在IE7中,每个选项卡都计算一个单独的实例,因此是我工具栏的单独实例。

对于我的生活,我找不到在单个IE窗口中的每个选项卡上显示单个实例的方法。我可以做的就是将其作为com对象注册到ROT并让每个实例进行通信并镜像所有其他实例,但这似乎是不必要的复杂。有人找到了解决方法吗?

2 个答案:

答案 0 :(得分:1)

因为你没有多说你的工具栏正在做什么,所以我假设当你有多个标签打开它时会吃掉一些资源......内存,网络,远程源连接等等。 / p>

我的建议是通过监听WindowStateChanged事件来跟踪哪个标签处于活动状态,而不是确保只运行一个实例,然后你可以做各种各样的事情:

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

答案 1 :(得分:0)

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

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

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