我使用VS 2010 Ultimate。

我试图通过右键单击“引用”->“添加引用...”,然后单击“浏览”并导航到“C:\Windows\System32\shdocvw.dll”,将“shdocvw.dll”添加到项目的引用中,但是当我单击“添加按钮根本没有任何 react 。该对话框甚至没有关闭。

知道我做错了什么吗?

我尝试重新启动VS,但始终遇到此问题。

最佳答案

在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();
}

编辑:使用VS 2012/.NET 4.x时,可以改用以下方法来解决错误“无法嵌入互操作类型'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();

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

C# How to get current URL from the IE?

关于c# - 无法将 "C:\Windows\System32\shdocvw.dll"添加到我的项目中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6530083/

10-16 22:54