-
Var HTMLNext: IHTMLElement; … procedure TForm1.Button1Click(Sender: TObject); var Rez : Byte; s : OleVariant; begin //Запускаем бесконечный цикл, но внутри есть условие выхода while True do begin {Получаем результат функции GetLink. Она ищет нужную ссылку на загруженной в IE(TWEbBrowser)страницы и записывает ее в HTMLNext, Если ее нет то Result = 2} Rez := GetLink; If Rez = 2 then break;
HTMLNext.click;{---Вот здесь ссылка нажимается и проходит какое-то время после того как IE срабатывает и цикл успевает за это время выполниться. Т.е. IE еще находится в состоянии Busy = false и ReadyState = 4. И цикл для ожидания загрузки проходит, а потом начинается загрузка и пошла каша. Как мне подождать пока страница загрузится???}
while true do begin if (not IE.Busy) and (IE.ReadyState = 4) then break; sleep(0); Application.ProcessMessages; end; end;
MessageDlg('Считывание завершено!!!', mtInformation, [mbOK], 0); end;
-
Спасибо! Уже сам решил. Кому интересно вот код. procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var CurWebrowser: IWebBrowser; TopWebBrowser: IWebBrowser; Document: OleVariant; WindowName: string; begin CurWebrowser := pDisp as IWebBrowser; TopWebBrowser := (Sender as TWebBrowser).DefaultInterface; if CurWebrowser = TopWebBrowser then begin Label1.Caption := Label1.Caption + #13 + 'Документ полностью загружен'; Beep; end else begin Document := CurWebrowser.Document; WindowName := Document.ParentWindow.Name; Label1.Caption := Label1.Caption + Format('Фрэйм "%s" загружен', [WindowName]) + #13; end; end;
|