无法将"C:\ Windows\System32\shdocvw.dll"添加到我的项目中

Jua*_*uan 8 c# visual-studio-2010 visual-studio

我使用的是VS 2010 Ultimate.

我试图通过右键单击以"shdocvw.dll中"添加到我的项目的引用参考文献- >添加引用...,然后单击浏览并导航到"C:\ WINDOWS\SYSTEM32\shdocvw.dll中",但是当我点击在添加按钮没有任何反应都没有.对话框甚至没有关闭.

知道我能做错什么吗?

我尝试重启VS但仍然遇到这个问题.

Bil*_*gee 18

在C#解决方案中,如果添加对名为"Microsoft Internet Controls"的COM组件的引用,则应该能够从C#控制台应用程序访问SHDocVw命名空间,而不必执行任何异常操作.

一旦我这样做(在VS 2008中),我就可以使用SHDocVw.ShellWindows,SHDocVw.IWebBrowser2等等.例如:

SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();

foreach (SHDocVw.IWebBrowser2 ie in shellWindows)
{
    Console.WriteLine("ie.LocationURL: " + ie.LocationURL);
    if (ie.LocationURL.Contains("foo.com"))
        ie.Quit();
}
Run Code Online (Sandbox Code Playgroud)

编辑:当使用VS 2012/.NET 4.x时,您可以使用下面的方法来解决错误"无法嵌入Interop类型'SHDocVw.ShellWindowsClass'."

using SHDocVw;
// ... snip ...
            SHDocVw.ShellWindows shellWindows = new ShellWindows();
            foreach (SHDocVw.IWebBrowser2 ie in shellWindows)
            {
                Console.WriteLine("ie.LocationURL: " + ie.LocationURL);
                if (ie.LocationURL.Contains("foo.com"))
                    ie.Quit();
Run Code Online (Sandbox Code Playgroud)

有关VS 2012问题的更多信息,请参阅以下答案:

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