2010-11-21 40 views
1

我正在使用浏览器的图像生成工作,但这样做是为了从窗体中的代码中获取浏览器的快照。但是,如果浏览器未在特定时间加载(假设15秒),则会发生空白快照。任何人都可以帮助我。如何知道当前浏览器是否加载了C#代码

+0

你的意思是说,你有一个winform内一个浏览器的元素,希望当它完成加载页知道吗? – Alxandr 2010-11-21 11:54:26

+0

没有浏览器不是在winform中,但我的winform应用程序打开浏览器n浏览页面n在任何浏览器中拍摄页面的快照bt我的应用程序无法知道该页面是否加载或不! – bynx 2010-11-22 10:35:29

回答

3

我不完全确定我是否完全理解你正在尝试做什么,但是我会采取一些措施:听起来好像你试图打开任何程序设置为用户的默认网页浏览器,然后做一些像BitBlt这样的截图。

但是,正如您所注意到的,仅等待预定义的时间间隔并且希望浏览器完全加载很困难。相反,运行该进程后,您可以尝试类似WaitForIdleInput之类的操作,这将暂停该线程的执行,直到该进程完成初始化并处于空闲状态(等待用户输入)。这应该允许浏览器完成加载,然后继续拍摄快照。

类似下面的代码:

//start the web browser 
System.Diagnostics.Process proc = System.Diagnostics.Process.Start("iexplore.exe"); 

//wait for it to completely finish loading 
proc.WaitForInputIdle(); 

//take your screenshot, or whatever 
//... 
+0

雅先生,它不工作,因为他们立即开始处理过程中的理想状态! – bynx 2010-11-22 05:36:24

+0

您可以尝试指定等待的时间(以毫秒为单位):'proc.WaitForInputIdle(3000);' – 2010-11-22 05:41:12

+0

不,情况并非如此。实际上,在我的项目(webfonts.com)中,我创建了一个Windows应用程序,它将打开浏览器并输入URL并拍摄快照,但我需要知道特定浏览器中的页面(如Firefox,Opera等)是加载或不加载,以便拍摄快照。即使互联网速度太慢,我的应用程序应该在浏览器页面加载后拍摄快照,但是我的代码无法知道页面被加载的天气,因为它是一个Windows应用程序,在这种情况下该怎么做?????? – bynx 2010-11-22 10:25:28

相关问题