2011-01-22 86 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不为空。