Beim Event OnDocumentComplete() möchtest du eigentlich nur SaveBody() ausführen, eventuell noch irgendwelche Steuerungsfunktionen, aber gewiss nicht Navigate(). Es ist auch kein guter Stil, wenn du Button1.Click ausführst - unabhängig vom Katastrophenfaktor.
Eine Weiterschaltung auf einen anderen
URL findet in deinem Code nicht statt, aber das weißt du?
Mehrerer Seiten hintereinander kannst du auch so abholen:
Delphi-Quellcode:
const
NAV_TIMEOUT = 5000;
// milliseconds
var
Links: TStrings;
procedure Timeout(
const url:
string);
begin
ShowMessage('
timeout: ' +
url);
end;
function WaitForDocumentComplete(wb: TWebBrowser; timeout: Word): Boolean;
var
ticks: Cardinal;
begin
ticks := GetTickCount;
repeat
Application.ProcessMessages;
until (wb.ReadyState = READYSTATE_COMPLETE)
or (GetTickCount - ticks > timeout);
Result := wb.ReadyState = READYSTATE_COMPLETE;
end;
begin
for i := 0
to Pred(Links.Count)
do
begin
WebBrowser.Navigate(Links[i]);
if WaitForDocumentComplete(WebBrowser, NAV_TIMEOUT)
then SaveBody
else Timeout(Links[i]);
end;
end;
Getippt und nicht getestet.
Gute Nacht.