【问题标题】:C# Making program wait until browser finish loading webpageC#制作程序等到浏览器完成加载网页
【发布时间】:2017-02-27 21:06:57
【问题描述】:

如何让我的程序等到网页完成加载后再执行下一条语句。我试过 Process::WaitForInputIdle();但它不会等待。

ProcessStartInfo pInfo = new ProcessStartInfo("firefox.exe");

pInfo.Arguments = "http://example.com";

Process p  = Process.Start(pInfo);

p.WaitForInputIdle();

pInfo.Arguments = "http://example.net";

p = Process.Start(pInfo);

p.WaitForInputIdle();

【问题讨论】:

  • 你想用firefox作为一个进程做什么..你可以使用WebBrowserConrtolWebClient这些控件有很多事件..WebbrowserControl会解决你的问题
  • 我的应用只能在firefox中运行.. :) ...还有其他方法吗
  • 您最好的办法是修复您的应用程序以在所有浏览器中运行。您使用了哪些 Firefox 特定功能而其他浏览器无法做到?

标签: c# .net


【解决方案1】:

你不能。这里的问题是当网页加载时 Firefox 没有通信。例如,当 Firefox 想要在打开网页之前更新自身时,您会看到问题。页面加载后如何回传?在这期间,整个 firefox.exe 可执行文件已被替换,与您的Process 的连接早已丢失。

WaitForInputIdle 做了一项非常具体的工作,这不是您所期望的。 Windows 通过消息泵工作。当你例如将鼠标移到窗口上,将向该窗口发送一条消息。 WaitForIdleInput 在应用程序处理完它收到的第一条消息时返回,因此当 Windows 知道它是“响应式”时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    相关资源
    最近更新 更多