Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

TWebBrowser.ReadyState = READYSTATE_COMPLETE

  Alt 11. Feb 2010, 12:03
Hallo,

ich habe einen Quelltext einer Seite und möchte, um einen Screenshot zu machen, diesen in einen TWebBrowser laden. Das geschieht so:
Delphi-Quellcode:
procedure WaitForBrowser(WB: TWebbrowser);
begin
  while (WB.ReadyState <> READYSTATE_COMPLETE)
    and not (Application.Terminated) do
  begin
    Application.ProcessMessages;
    Sleep(0);
  end;
end;

// WB: TWebBrowser;
if WB.Document = nil then
  WB.Navigate('about:blank');
OleVariant(WB.Document as IHTMLDocument2).Clear;
OleVariant(WB.Document as IHTMLDocument2).Write(Utf8ToAnsi(Quelltext));
OleVariant(WB.Document as IHTMLDocument2).Close;

if WB.ReadyState = READYSTATE_COMPLETE then // Testweise eingebaut
  showmessage('Noch nicht richtig geladen!');//

WaitForBrowser(WB);

DoScreenshot();
Das klappt bei der ersten Seite auch wunderbar: Bilder etc werden nachgeladen und danach der Screenshot gemacht. Aber bei allen nachfolgenden Seiten, die ich auf diese Art und Weise lade, hat WB.ReadyState gleich nach dem Quelltext laden den Status READYSTATE_COMPLETE, das heißt die zu Testzwecken eingebaute Meldung kommt und auf dem Screenshot sieht man die Seite ohne Bilder

Ich vermute, dass WB.ReadyState nicht zurückgesetzt wird, wenn man einen Quelltext wie oben lädt. Stimmt das, und wie kann ich das umgehen?


mfg.Dominik

(WB.OnDocumentComplete wird nicht gefeuert und über eine lokale Datei und dann WB.Navigate(Datei) will ich nicht gehen)
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat