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

时间:2010-11-13 18:09:32

标签: c# internet-explorer

我想从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.

如何解决?

1 个答案:

答案 0 :(得分:17)

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

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

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

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