スリープ


たぺこ  2008-12-03 02:01:03  No: 32777

WebBrowser1.Navigate('http://yahoo.co.jp');

Application.ProcessMessages;
sleep(2000);

WebBrowser1.Navigate('http://google.co.jp');

Application.ProcessMessages;
sleep(2000);

WebBrowser1.Navigate('http://goo.ne.jp');

Application.ProcessMessages;
sleep(2000);;

うまくいかないです。
どうしたらスリープうまくいきますか?


まずは  2008-12-03 02:08:56  No: 32778

質問の仕方から覚えましょう。
・開発環境
・コードの目的(具体的に何をしたいのか)
・何がどう上手くいかないのか

上手くいきません、では質問になってないです。


たぺこ  2008-12-03 02:36:43  No: 32779

すいません。

WebBrowser1.Navigate('http://goo.ne.jp');
Application.ProcessMessages;
sleep(2000);

ebBrowser1.Navigate('http://goo.ne.jp');
sleep(2000);
Application.ProcessMessages;

どちらにしても、

ブラウザ移動更新→ウエイト→ブラウザ移動更新→ウエイト

とさせたいです。


いや  2008-12-03 05:47:52  No: 32780

何がどううまくいかないのですか?
まったく説明になっていませんが。

パっと見た感じ、Sleep時間を決め打ちすると通信が遅延した場合に
フォローできないと思うのですが。
複数のURLをスレッドで開いたほうがいいんじゃないかと。


KHE00221  2008-12-03 09:17:31  No: 32781

WebBrowser1.Navigate('http://www.yahoo.co.jp');
WebBrowser1.Navigate('http://www.google.co.jp');
とするとわかるけど
だと Yahooを読み終えた後に google を読みにいっているわけじゃないので

>WebBrowser1.Navigate('http://yahoo.co.jp');
>Application.ProcessMessages;
>sleep(2000);
>WebBrowser1.Navigate('http://google.co.jp');

だと Yahooを読む 
2秒後に Yahooを読み終えていなくても 
google を読む
となってしまいます。

なので
読み終えてから2秒後に次のを読むようにするには
以下のようにします。

procedure TForm8.Button1Click(Sender: TObject);
begin
    WebBrowser1.Navigate('http://www.yahoo.co.jp');
    Count := 1;
end;

procedure TForm8.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
    Application.ProcessMessages;
    Sleep(2000);
    if Count = 1 then WebBrowser1.Navigate('http://www.google.co.jp');
    if Count = 2 then WebBrowser1.Navigate('http://www.goo.ne.jp');
    Inc(Count);
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加