Hi
Wenn du den EmbeddedWB verwendest, kannst du per Doc2.scripts.length abfragen, wieviele Scripte geladen wurden bzw.
mit folgendem Code warten, bis alle geladen sind:
procedure WaitForScriptLoaded;
var
lComplete: Boolean;
lScript: IHTMLScriptElement;
begin
// Warte bis die Scripts geladen wurden
lComplete := FALSE;
while not lComplete do begin
Forms.Application.ProcessMessages;
if Doc2.scripts.length >= 1 then begin
lScript := Doc2.scripts.Item(0,0) as IHTMLScriptElement;
if (lScript.readyState = 'complete') or
(lScript.readyState = 'loaded') then begin
lComplete := True;
end;
end;
Sleep(100);
end;
end;
Wenn du keinen EmbeddedWB hast, musst du erst das Document ermitteln.
Die Abfrage kannst du um OnDocumentComplete machen. Hier solltest du folgendes machen:
procedure Form.DoOnEWBDocumentComplete(ASender: TObject; const pDisp: IDispatch;
var
URL: OleVariant);
var
lCurWebbrowser: IWebBrowser;
lTopWebbrowser: IWebBrowser;
begin
try
// Wurde das Document auch wirklich vollständig geladen ??
// DocumentComplete wird auch für die eingebetteten Frames aufgerufen !!!
lCurWebbrowser := pDisp as IWebBrowser;
lTopWebBrowser := (ASender as TWB).DefaultInterface;
// Erst wenn das Dokument komplett geladen wurde, dann
// dürfen die Aktionen durchgeführt werden
if (lCurWebbrowser = lTopWebBrowser) and
(FWB.ReadyState = READYSTATE_COMPLETE) then begin
-> Hier kannst du dann warten