C#制作程序等到浏览器完成加载网页

时间:2010-10-27 05:15:55

标签: c# .net

如何让我的程序在执行下一个语句之前等到网页完成加载。我试过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();

1 个答案:

答案 0 :(得分:2)

你做不到。这里的问题是Firefox在加载网页时不会回传。例如,当Firefox在打开网页之前想要自我更新时,您将看到问题。加载页面时如何回复?在这两者之间,整个firefox.exe可执行文件已被替换,并且与Process的连接已经很久没有了。

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