2011-01-22 89 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); 

當事件處理器是所謂的,我可以看到事件的當前URL。 但是,每個瀏覽器對象事件都會調用事件處理程序,包括iframe。我只需要在地址欄中的網址發生更改時(您鍵入要導航的網址)進行響應。

如何確定該事件是否屬於頂部框架\ webbrowser?有沒有辦法使用pDisp對象或其他東西來獲取地址欄url?

+0

當頁面是頂層頁面時,pDisp將與調用SetSite時提供給您的調度指針相匹配。請記住,不建議在.NET中編寫IE擴展。 – EricLaw 2011-01-22 23:13:22

回答

0

添加引用Interop.SHDocVw後,我可以看看:

HostInstance.BrowserRef.LocationURL 

的事件處理器被稱爲很多次(因爲I幀的),但我可以檢查每次如果新地址與舊的不同。

HostInstance被設置在最喜歡的例子插件構造 - 不要忘記,以驗證HostInstance不爲空。