2011-01-22 16 views
0

私はSpicIEを使用してInternet Explorer用の小さなアドオンを作成しようとしています。 は、私のようなコードを使用してイベントに応答する方法を理解:SpicIE - アドレスバーの実際のアドレスを取得する方法は?

this.OnDocumentComplete += new SpicIE.Common.WebBrowserEvent_DocumentComplete(SamplePlugin_OnDocumentComplete); 
this.OnNavigateComplete += new SpicIE.Common.WebBrowserEvent_NavigateComplete2(SamplePlugin_OnNavigateComplete); 
this.OnBeforeNavigate += new SpicIE.Common.WebBrowserEvent_BeforeNavigate2(SamplePlugin_OnBeforeNavigate); 

のEventHandlerが呼ばれたとき、私はイベントの現在のURLを参照してくださいすることができます。 しかし、イベントハンドラはiframeを含むすべてのウェブブラウザオブジェクトイベントに対して呼び出されます。私は、アドレスバーにあるURLが変更されたとき(あなたが移動したいURLを入力するところ)に応答する必要があります。

イベントがトップフレーム\ webbrowserに属するかどうかを確認するにはどうすればよいですか? pDispオブジェクトなどを使用してアドレスバーのURLを取得する方法はありますか?

HostInstance.BrowserRef.LocationURL 

のEventHandlerが(理由のiframeの)何回も呼ばれますが、新しいアドレスがある場合、私はすべての時間を確認することができます

+0

ページが最上位ページの場合、SetSiteが呼び出されたときに提供されたディスパッチポインタにpDispが一致します。 .NETでIE拡張を書くことはお勧めできません。 – EricLaw

+0

IEエクステンションを書くにはどうすればよいですか? – Oren

答えて

0

Interop.SHDocVwへの参照を追加した後、私は見ることができます古いものとは異なる。

HostInstanceは、ほとんどの例のようなプラグインのコンストラクタで設定されている - HostInstanceがnullでないことを確認することを忘れないでください。

関連する問題