SpicIE - 如何在地址栏中获取真实地址?

时间:2011-01-22 20:43:06

标签: c# visual-studio-2008 internet-explorer plugins browser

我正在尝试使用SpicIE为Internet Explorer编写一个小插件。 我理解如何使用以下代码响应事件:

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。 但是,为每个webbrowser对象事件调用事件处理程序,包括iframe。我只需要更改地址栏中的URL(您键入要导航到的URL的位置)时才需要响应。

如何判断事件是否属于顶部框架\ webbrowser?有没有办法使用 pDisp 对象或其他东西来获取地址栏网址?

1 个答案:

答案 0 :(得分:0)

添加对 Interop.SHDocVw 的引用后,我可以看看:

HostInstance.BrowserRef.LocationURL

多次调用事件处理程序(因为iframe),但每次都可以检查新地址是否与旧地址不同。

HostInstance 在插件构造函数中设置,就像大多数示例一样 - 不要忘记验证 HostInstance 不为空。