Entwickler-Ecke

Internet / Netzwerk - IESteuerung: Wie abfragen ob Page vollständig geladen ist?


Meum - Mi 07.03.07 13:14
Titel: IESteuerung: Wie abfragen ob Page vollständig geladen ist?
Hallo,

habe schon gesucht aber nichts zu diesem Thema im Forum gefunden.

Ich habe eine Delphianwendung, welche ein Internetexplorerfenster aufruft und steuert (bestimte Links anklicken und einfache Formularfelder ausfüllen). Das klappt alles wunderbar. Ich verwende sendkeys, mouse_event und setcursorpos dazu. Um auf die Aktualisierungen im Browserfenster zu warten verwende ich die sleep(xxx). Da die Aktualiesierung oft nur kurz aber manchmal auch länger dauert (für die gleiche Aktion) habe ich recht großzügige sleep Zeiten angegeben (manchmal 10 sec). Dadurch dauert die komplette Aktion natürlich relativ lange.

Jetzt meine Frage:
Ist es möglich "irgendwie" herauszubekommen ob eine Internetexplorerseite vollständig geladen ist oder ob der Ladevorgang noch aktiv ist? Also ob die Windows-Fahne rechts-oben flattert oder nicht?

Dann könnte man auf die statischen Wartezeiten mit sleep verzichten und die Steueraktionen dynamischer machen.


jakobwenzel - So 18.03.07 19:05

Das müsste Webbrowser.Readystate=READYSTATE_INTERACTVE sein.


Dummy - Di 20.03.07 00:04

user profile iconjakobwenzel hat folgendes geschrieben:
Das müsste Webbrowser.Readystate=READYSTATE_INTERACTVE sein.


@Jakob
Das halte ich für gefährlich.
Readystate_Interactive kann durchaus schon gemeldet werden ohne das das Document vollständig geladen ist. Readystate_Complete wäre meiner Meinung nach besser.

PS Bin auf dieses Posting gestoßen weil ich seit Tagen ein Problem mit dem Readystate_COmplete habe. Es will einfach nicht kommen wenn ich in OnBeforNavigate ein iframe cancel. (mittlerweile glaube ich das es dafür keine Lösung gibt :-( )


wulfskin - Di 20.03.07 13:54

Hallo,

wenn ich mich recht entsinne, gibt es dafür auch ein Ereignis! Wie das heisst, dass findest du am besten selbst heraus (kein Delphi hier) und schreibst es dann hier für alle rein!

Edit: Sorry, unpassende Antwort. Habe zu schnell Quer gelesen!

Viele Grüße,
Hape


GTA-Place - Di 20.03.07 14:45

Ihr wisst aber schon, dass Meum kein TWebBrowser verwendet?


Dummy - Di 20.03.07 17:30

user profile iconGTA-Place hat folgendes geschrieben:
Ihr wisst aber schon, dass Meum kein TWebBrowser verwendet?

Geb zwar zu das ich das überlesen haben und will auch jetzt nichts behaupten was ich noch nicht ausprobiert habe, wenn ich es jedoch richtig verstanden habe lässt sich das internet explorer fenster über iwebbrowser2 ansprechen und somit könnte man wieder auf ReadyState zurückgreifen.