在exe中没有使用SHDocVw.dll引用

时间:2013-08-14 16:26:51

标签: c# dll reference

当我使用可执行文件而不是在Visual Studio 2010中调试它时,我遇到了问题。

我想从IE中的标签获取YouTube视频的网址,我在COM标签中引用了C:\Windows\System32\shdocvw.dll和“Microsoft Internet Controls”(即使程序运行正常)在调试模式下没有此引用。)

引用的dll位于Debug文件夹中,名为“Interop.SHDocVw.dll”。 这是我的代码的一部分:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    { //the foreach loop isn't executed when I use the executable file
        foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindowsClass())
        {
            url = ieInst.LocationURL;
            if (url.Contains("youtube"))
            {
                webBrowser1.Document.GetElementById("youtube-url").SetAttribute("value", url);
                webBrowser1.Document.GetElementById("submit").InvokeMember("click");
                usable = url;
                timer1.Start();
            }

        }

    }

当我在Visual Studio中以调试模式运行它时,一切正常但是当我使用可执行文件时它不起作用并且DocumentCompleted多次发生。

任何帮助?

1 个答案:

答案 0 :(得分:0)

您可以尝试检查DocumentCompleted方法中的WebBrowser.ReadyState属性。一些事情:

if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
    DoWork();
}

文档: http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.readystate.aspx http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserreadystate.aspx