|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Открыть и сохранить страницу (TWebBrowser)
Нужно открыть страницу в TWebBrowser и, когда она загрузится, сохранить на жесткий диск.
Я делаю так: WebBrowser1.Navigate('http://ya.ru'); repeat Until WebBrowser1.ReadyState=4; ShowMessage('Ok'); Но почему то программа виснет (( С какого фига?? Если проверять таймером, то все работает, но таймером нельзя, т.к. тогда получится, что после таймера надо перепрыгнуть в определенное место в другой процедуре, а лабелы работают только в одной процедуре =( Вобщем суть ясна: нужно в одной процедуре открыть, дождаться окончания загрузки и сохранить в файл на жесткий диск, страницу. |
#2
|
|||
|
|||
Попробуй сохранять страницу так:
Uses ..., ActiveX, MSHTML; ... function WB_DocumentLoaded(WB: TWebbrowser): Boolean; var iDoc: IHtmlDocument2; begin Result := False; if Assigned(WB) then begin if WB.Document <> nil then begin WB.ControlInterface.Document.QueryInterface(IHtmlD ocument2, iDoc); Result := Assigned(iDoc); end; end; end; procedure WB_Save(WB: TWebbrowser); var Dispatch: IDispatch; CommandTarget: IOleCommandTarget; vaIn: OleVariant; vaOut: OleVariant; begin if WB_DocumentLoaded(WB) then if not (WB.Busy) then begin Dispatch := WB.Document; Dispatch.QueryInterface(IOleCommandTarget, CommandTarget); vaIn := ''; vaOut := ''; try CommandTarget.Exec(PGUID(nil), OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); except {handle exceptions} on E: Exception do MessageDlg('ERROR: Unable to show Save As dialog. ' + #13 + E.ClassName + ': ' + E.Message + '.', mtError, [mbOk], 0); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin WB_Save(WebBrowser1); end; |
#3
|
|||
|
|||
Спс, но я справился с помощью события OnDocumentComplete.
|