全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4668
推到 Plurk!
推到 Facebook!

如何判斷webBrowser已下載完成

答題得分者是:Windyboy
lsleo
一般會員


發表:19
回覆:28
積分:9
註冊:2003-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-24 16:13:28 IP:210.60.xxx.xxx 未訂閱
不好意思..想請教各位 使用webBrowser時有沒有方法或屬性可以知道網頁已下載完成 謝謝~ PS:不是由OnDocumentComplete判斷的情況下
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-24 16:39:25 IP:61.59.xxx.xxx 未訂閱
Hi lsleo: 可以試試webbrowser.busy ^_^ -------------------------- ~天下本無事 庸人自擾之~
lsleo
一般會員


發表:19
回覆:28
積分:9
註冊:2003-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-24 19:40:39 IP:210.60.xxx.xxx 未訂閱
不好意思~ 我在補充一下 現在我用迴圈的方式透過TWebBrowser來瀏覽一些順序性網頁(EX:A1~A5) 但不知用什麼方法才能在A1下載完成後再接序著下載A2..依序到A5 因為用迴圈時總是A1還沒下載完時,A2就因為迴圈的關係開始下載 使得A1下載沒完成.... 希望各位幫幫忙~想想解決方法
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-25 09:19:26 IP:61.59.xxx.xxx 未訂閱
try it^_^ procedure TForm1.Button1Click(Sender: TObject); var sURL : array[1..5] of String; i : Integer; begin sURL[1] := 'http://tw.yahoo.com/'; sURL[2] := 'http://www.msn.com.tw/'; sURL[3] := 'http://www.pchome.com.tw/'; sURL[4] := 'http://www.sina.com.tw/'; sURL[5] := 'http://delphi.ktop.com.tw/'; for i := 1 to 5 do begin WebBrowser1.Navigate(sURL[i]); while True do begin Application.ProcessMessages(); if not WebBrowser1.Busy then break; end; end; end; -------------------------- ~天下本無事 庸人自擾之~
Clarinet
高階會員


發表:9
回覆:97
積分:126
註冊:2002-05-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-25 09:37:21 IP:61.66.xxx.xxx 未訂閱
我有用過WebBrowser的Busy的確是沒有作用,所以就改在其OnDocumentComplete事件裡面用一個變數來判斷是否該文件下載完畢! 如: WebBrowser1.OnDocumentComplete begin Busy :=False; end; ....... ..... WebBrowser1.Navigate(.....) Busy :=True; while Busy do begin .... end; 若您是用ShellWindow來控制IE的話,那其Busy就有作用! GPS(全球衛星定位系統) http://www.allgps.com
------
GPS(全球衛星定位系統)
http://www.allgps.com
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-25 09:52:44 IP:61.59.xxx.xxx 未訂閱
Hi Clarinet: WebBrowser.Busy沒作用?? 可是我那段code可以正常運作耶^_^ 我是Run過後才Post上來的:(, 怪了@_@'' 我再研究研究...:D P.S. 不過, 我通常都是把判斷完成的Code寫在OnDocumentComplete就是了.:) -------------------------- ~天下本無事 庸人自擾之~
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-25 10:00:59 IP:203.73.xxx.xxx 未訂閱
引言: 不好意思..想請教各位 使用webBrowser時有沒有方法或屬性可以知道網頁已下載完成 謝謝~ PS:不是由OnDocumentComplete判斷的情況下
lsleo 你好: 可以這樣子寫 < class="code"> while Webbrowser.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; ShowMessage('下載完成'); -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
avex
初階會員


發表:19
回覆:49
積分:43
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-25 10:17:48 IP:211.23.xxx.xxx 未訂閱
>while Webbrowser.ReadyState <> READYSTATE_COMPLETE do > Application.ProcessMessages; >ShowMessage('下載完成'); 小弟個人覺得用 state 去判斷有所不對, 因為當你下載失敗, state 還是會跑到 complete 的狀態. 這時又要去判斷 document 是否 Null 有點畫蛇添足
lsleo
一般會員


發表:19
回覆:28
積分:9
註冊:2003-05-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-25 10:59:03 IP:210.60.xxx.xxx 未訂閱
Windyboy 您好 不好意思~我想請問一下 程式中的Application.ProcessMessages(); 是什麼作用啊~
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-07-25 11:17:20 IP:203.73.xxx.xxx 未訂閱
引言: 程式中的Application.ProcessMessages(); 是什麼作用啊~
lsleo 你好: 請參考以下的連結文章 ><> > 建議你自己查詢 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
Clarinet
高階會員


發表:9
回覆:97
積分:126
註冊:2002-05-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-07-25 17:54:22 IP:61.66.xxx.xxx 未訂閱
引言: Hi Clarinet: WebBrowser.Busy沒作用?? 可是我那段code可以正常運作耶^_^ 我是Run過後才Post上來的:(, 怪了@_@'' 我再研究研究...:D P.S. 不過, 我通常都是把判斷完成的Code寫在OnDocumentComplete就是了.:) -------------------------- ~天下本無事 庸人自擾之~
Hi, 您好! WebBrowser.Busy 無作用,我也不太能確定! 我是在一個網頁上的Form Action上,按下Action的按鈕之後,以WebBrowser.Busy來判斷是否已完成查詢的動作。 我試的結果的確是無任何作用,WebBrowser.Busy的值永遠為False。 因此才改為由onDocumentComplete來判斷。至少這個比較準! 而我認為Form 的Action按鈕,和Navigate(…)的動作,應該一樣吧! 所以才會說 WebBrowser.Busy無作用。 因此,Navigate(…)後的WebBrowser.Busy有無作用,就不太確定了! 所以,若是用WebBrowser時,都改由onDocumentComplete來判斷,比較好! ShellWindow控制IE就無此問題了!覺得有點怪怪的。IE和WebBrowser都是用同樣的東西,但WebBrowser就都有某些問題存在! GPS(全球衛星定位系統) http://www.allgps.com
------
GPS(全球衛星定位系統)
http://www.allgps.com
Clarinet
高階會員


發表:9
回覆:97
積分:126
註冊:2002-05-08

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-07-25 18:16:10 IP:61.66.xxx.xxx 未訂閱
剛仔細看了您的部份,又想到了可能原因。(因為那是很久之前寫的程式) 一開始是用ShellWindow來做,後來改用WebBrowser來做(為了把它納入我的程式內)。    我是用 ....Submit; While WebBrowser.Busy do  Application.Processmessage;    而大大您的是用    while True do begin  Application.Processmessage;  if not WebBrowser.Busy then Break; end;    或許是因為下完命令之後,WebBrowser.Busy的狀態還來不及改變,所以才會造成我感覺WebBrowser.Busy的無作用(因為相同的東西在IE內是正常的)。或許是這個原因! 有空時再把很久之前寫的這支程式拿來測試看看,或許是如此吧! 不過,我還是不太喜歡用WebBrowser,因為有些許的問題!
------
GPS(全球衛星定位系統)
http://www.allgps.com
sneaky
一般會員


發表:0
回覆:1
積分:0
註冊:2004-03-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-03-02 16:17:27 IP:163.28.xxx.xxx 未訂閱
請問一下,到底
系統時間:2024-05-06 23:58:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!