Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.06.2007, 03:07
SeRыЙ SeRыЙ вне форума
Прохожий
 
Регистрация: 09.06.2007
Сообщения: 5
Репутация: 10
Вопрос Открыть и сохранить страницу (TWebBrowser)

Нужно открыть страницу в TWebBrowser и, когда она загрузится, сохранить на жесткий диск.
Я делаю так:

WebBrowser1.Navigate('http://ya.ru');
repeat
Until WebBrowser1.ReadyState=4;
ShowMessage('Ok');

Но почему то программа виснет (( С какого фига?? Если проверять таймером, то все работает, но таймером нельзя, т.к. тогда получится, что после таймера надо перепрыгнуть в определенное место в другой процедуре, а лабелы работают только в одной процедуре =(

Вобщем суть ясна: нужно в одной процедуре открыть, дождаться окончания загрузки и сохранить в файл на жесткий диск, страницу.
Ответить с цитированием
  #2  
Старый 09.06.2007, 04:38
BlackCash BlackCash вне форума
Прохожий
 
Регистрация: 08.06.2007
Сообщения: 42
Репутация: 15
По умолчанию

Попробуй сохранять страницу так:

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  
Старый 10.06.2007, 17:31
SeRыЙ SeRыЙ вне форума
Прохожий
 
Регистрация: 09.06.2007
Сообщения: 5
Репутация: 10
По умолчанию

Спс, но я справился с помощью события OnDocumentComplete.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter