C#如何从IE获取当前URL?

我想从IE(.NET 4)获取当前的URL。 为此,我添加了对Microsoft Interner Controls的引用并添加了代码(来自http://omegacoder.com/?p=63 )

foreach (InternetExplorer ie in new ShellWindowsClass()) { textBox1.Text = ie.LocationURL.ToString(); } 

但我得到2个错误:

 1] The type 'SHDocVw.ShellWindowsClass' has no constructors defined 2] Interop type 'SHDocVw.ShellWindowsClass' cannot be embedded. Use the applicable interface instead. 

怎么解决?

第二个错误导致第一个错误。 打开项目的References节点,选择SHDocVw。 在“属性”窗口中,将“嵌入互操作类型”更改为false。 您将必须部署Interop.SHDocVw.dll程序集,您将找到构建输出目录以及您的程序。

编辑:在研究这个错误后,我找到了一个更好的方法来做到这一点。 问题是只能嵌入COM 接口类型,而不能嵌入 。 因此,请避免在代码中使用合成的XxxxClass包装器。 让它看起来像这样:

  foreach (InternetExplorer ie in new ShellWindows()) { //... } 

这看起来很奇怪,你通常不能在C#语言的接口类型上使用new运算符。 但实际上支持COM接口。