スリープ


たぺこ  2008-12-03 02:01:03  No: 32777  IP: [192.*.*.*]

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  IP: [192.*.*.*]

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

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

編集    削除
たぺこ  2008-12-03 02:36:43  No: 32779  IP: [192.*.*.*]

すいません。

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  IP: [192.*.*.*]

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

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

編集    削除
KHE00221  2008-12-03 09:17:31  No: 32781  IP: [192.*.*.*]

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;

編集    削除