我想从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.
如何解决?
答案 0 :(得分:17)
第二个错误导致第一个错误。打开项目的References节点,选择SHDocVw。在“属性”窗口中,将“嵌入互操作类型”更改为false。您将必须部署Interop.SHDocVw.dll程序集,您将找到构建输出目录以及您的程序。
编辑:在研究了这个错误之后,我发现了一种更好的方法。问题是只能嵌入COM 接口类型,而不能嵌入类。因此,请避免在代码中使用合成的 XxxxClass 包装器。让它看起来像这样: foreach (InternetExplorer ie in new ShellWindows()) {
//...
}
看起来很奇怪,你通常不能在C#语言的接口类型上使用 new 运算符。但实际上COM接口支持。