2009-06-11 11 views
4

私はC#でInternet Explorerのツールバーを開発して、外部アプリケーションからURLを送受信しました。 IE6ではうまくいっていましたが、私は新しいバージョン(IE7)でタブブラウジングを利用したいと思っていましたが、私はそこに悩まされました。それはIE7で、各タブは別のインスタンス、したがって私のツールバーの別のインスタンスをカウントするようです。IE7の複数のタブとツールバーの1つのインスタンス

私の人生にとって、私は1つのIEウィンドウのすべてのタブに1つのインスタンスを表示させる方法を見つけることができません。私ができることは、COMオブジェクトとしてROTに登録し、各インスタンスが通信して他のすべてをミラーリングすることですが、それは不必要に複雑なようです。誰かがこれに対する回避策を見つけましたか?

+0

各タブが異なるプロセスで実行されている可能性があるため、IE 8ではこれが難しくなります。 – Michael

+0

実際、Firefoxでは約100倍簡単です。私はこのような悩みが存在するのに驚いています。私は、MSがタブブラウジングのためにより良いAPIを提供することを望んでいましたが、それは存在しないようです。 – directedition

+1

個別のインスタンスは、1つのブラウザウィンドウがブラウザ全体をクラッシュさせないようにするために使用されます。 Chromeでも同じことが行われます。これが良いかどうかは議論の余地があります。 –

答えて

0

mutexがほしいと思うように、アプリケーションのインスタンスを1つだけ許可するか、おそらくはツールバーのすべてのインスタンスを供給するアプリケーションのインスタンスを許可するように見えます。

msdnさんは、同期時につかまえを確認できました。

ロバートハーベイは正しいですが、これは標準になっていますが、getting IE urls from multiple instances appears rather painlessです。

1

あなたのツールバーが何をしているかについてはあまり言わなかったので、複数のタブを開いているときに、メモリ、ネットワーク、リモートソースの接続などいくつかのリソースを食べていると仮定します。

ではなく必ずインスタンスが1つだけ実行されている作り、私の提案は、あなたが物事の様々な操作を行うことができ、WindowStateChangedイベントを聴くことにより、アクティブなタブのトラックを維持することです:

  • があなたをシャットダウンしますそれが非アクティブである間に
  • タブがアクティブではないことをリモートソースに通知します。
  • 非アクティブなタブには通知を表示しないでください。
  • 実行中のスレッドをツールバーで停止します。
  • その他
関連する問題