AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser.ReadyState = READYSTATE_COMPLETE

Ein Thema von dominikkv · begonnen am 11. Feb 2010 · letzter Beitrag vom 11. Feb 2010
Antwort Antwort
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: TWebBrowser.ReadyState = READYSTATE_COMPLETE

  Alt 11. Feb 2010, 12:24
Hallo Dominik,

teste einmal wb.Busy auf true. Ich hab bisher noch nicht heraus bekommen, wann dieses READYSTATE_COMPLETE wirklich stimmt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
dominikkv

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

Re: TWebBrowser.ReadyState = READYSTATE_COMPLETE

  Alt 11. Feb 2010, 12:47
Zitat von p80286:
Hallo Dominik,

teste einmal wb.Busy auf true. Ich hab bisher noch nicht heraus bekommen, wann dieses READYSTATE_COMPLETE wirklich stimmt.

Gruß
K-H
Sehr schön, jetzt funktionierts

Delphi-Quellcode:
procedure WaitForBrowser(WB: TWebbrowser);
begin
  while (WB.Busy)
    and not (Application.Terminated) do
  begin
    Application.ProcessMessages;
    Sleep(100);
  end;
end;
Vielen Dank p80286, auf die DP ist immer Verlass
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz