2010-11-21 43 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

相關問題