AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebbrowser + Application.ProcessMessages = Probleme?
Thema durchsuchen
Ansicht
Themen-Optionen

TWebbrowser + Application.ProcessMessages = Probleme?

Ein Thema von MartinKumeran · begonnen am 10. Jun 2009 · letzter Beitrag vom 11. Jun 2009
 
MartinKumeran

Registriert seit: 19. Jul 2005
10 Beiträge
 
#1

TWebbrowser + Application.ProcessMessages = Probleme?

  Alt 10. Jun 2009, 09:07
Hallo,

sind irgendjemandem schon einmal Freeze-Probleme bei der Benutzung des TWebBrowsers sowie des Befehls Application.ProcessMessages untergekommen?
Konkret möchte ich innerhalb einer Prozedur darauf warten dass der TWebBrowser eine Website fertig geladen hat und benutze dafür folgende Wartefunktion:

Delphi-Quellcode:
procedure Wait(Secs: Cardinal);
var
  ActualTime, LastTime, WaitingTime: Cardinal;
begin
  if Secs = 0 then exit;
  WaitingTime := Secs*1000;
  LastTime := GetTickCount;

  While true do begin //Endlosschleife welche durch break beendet wird
    Application.ProcessMessages;
    sleep(1);
    ActualTime := GetTickCount;
    if LastTime > ActualTime then begin //GetTickCount wurde von Windows zurueckgesetzt
      LastTime := ActualTime;
      Continue;
    end;
    if ActualTime - LastTime >= WaitingTime then break;;
  end;
end;
Mein Programm prueft ob das Ready-Ereignis des TWebBrowsers ausgelöst worden ist und ruft ansonsten die obenstehende Funktion mit jeweils einer Sekunde Wartezeit auf.
Diese Kombination aus dem laufenden Laden einer URL innerhalb des WebBrowsers und dem Aufruf von Application.ProcessMessages führt jedoch manchmal zu einem kompletten Freeze der Anwendung. In einem solchen Fall läuft die Anwendung einwandfrei bis zum Erreichen des ProcessMessages-Befehl um diesen nie wieder zu verlassen.
Hat jemand schon einmal etwas ähnliches beobachtet oder gar eine Lösung gefunden?
Im Internet finden sich verschiedentliche Spuren ähnlicher Probleme, beispielsweise hier:
Zitat:
One last point: Be careful with the use of Application.ProcessMessages when you use WebBrowser. I've avoided it except where fetches are added, which waits if the resultProcessor is busy. I don't know if it's the way events are sent, but I found that setting a label and calling application.ProcessMessages could force the same event to happen again. This occurred more in the debugger, but if you get odd behavior, comment them out.
Gibt es eine Möglichkeit das was innerhalb von Application.ProcessMessages passiert zu debuggen? Oder noch besser: Gibt es einen alternativen Befehl in Delphi zu ProcessMessages welcher trotzdem dafür sorgt dass der TWebBrowser weiter arbeiten kann?

Viele Grüße und Danke im Voraus,

Martin Kumeran
  Mit Zitat antworten Zitat
 


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 07:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz