0

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

我想从 IE 中的选项卡中获取 youtube 视频的 url,并且我参考了:C:\Windows\System32\shdocvw.dll以及 COM 选项卡中的“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 发生多次。

有什么帮助吗?

4

1 回答 1

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

于 2013-08-14T16:55:01.217 回答