A
Admin
Не подскажете безграмотному как заставить свою программу сохранять открывающуюся (или открывшуюся) html страничку? Если можно, приведите пожалуйста кусочек кода. Заранее спасибо!
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
uses
ActiveX, MSHTML_TLB, SHDocVw_TLB,
ComCtrls, OleCtrls;
procedure TForm1.Button1Click(Sender: TObject);
var
HTMLDocument: IHTMLDocument2;
PersistFile: IPersistFile;
begin
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
PersistFile := HTMLDocument as IPersistFile;
PersistFile.Save(StringToOleStr('c:\SavedFile.html'), System.True);
end;
раздел uses ActiveX. Двигаемся дальше теперь кидаем на форму две кнопочки (button) с закладки standart, компонент SaveDialog с закладки Dialog и компонент webBrowser с закладки internet. Так с компонентами вроде разобрались
Создаем обработчик событий(onclick) на первой кнопке и в нем прописываем следующий код:
webbrowser1.Navigate('http://www.delphiexpert.ru');
Так теперь переходим на самый верх и сразу же после public пишем:
procedure SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser);
Нажимаем комбинацию клавиш Ctrl+Shift+C
И Delphi автоматически генерирует процедуру, получиться должно примерно так:
procedure TForm1.SaveHTMLSourceToFile(const FileName: string;
WB: TWebBrowser);
begin
end;
Сейчас давайте пропишем действия, которые будет выполнять данная процедура, а именно она должна сохранять текущий открытый в компоненте webbrowser документ в виде исходника HTML
procedure TForm1.SaveHTMLSourceToFile(const FileName: string;
WB: TWebBrowser);
var
PersistStream: IPersistStreamInit;
FileStream: TFileStream;
Stream: IStream;
SaveResult: HRESULT;
begin
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate);
try
Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
SaveResult := PersistStream.Save(Stream, True);
if FAILED(SaveResult) then
MessageBox(Handle, 'Fail to save HTML source', 'Error', 0);
finally
FileStream.Free;
end;
end;
Вот практически и все осталось только создать обработчик событий (onClick) на второй кнопке и прописать там:
if SaveDialog1.Execute then
SaveHTMLSourceToFile(SaveDialog1.FileName, WebBrowser1);
так а что мешает сохранить их самостоятельно?Может быть в этом все дело?
КАК?так а что мешает сохранить их самостоятельно?
Не могу скачать пример www.zipМожноСсылка скрыта от гостейСсылка скрыта от гостей, но там нужны модули adodb_tlb, cdo_tlb.
Посмотреть вложение 4222
Посмотреть вложение 4223
ЗЫ Пример, который сохраняет страницу вместе с картинками
Посмотреть вложение 4224
правая кнопка - сохранить как.ADODB_TLB.pas - он открывается в новой вкладке, CDO_TLB.pas тоже открывается в новой вкладк
не должно так быть. у меня все качает..по ссылке www.zip загружается страница codeby.net/ipb.html
Да, Вы правы, через правую кнопку - сохранить как закачал архив. Распаковал, запустил проект. Высветилась какая-то ошибка... нет какой-то dll... не успел заметить, т.к. нажал ОК, запустил RUN и проект скомпилировался и запустился. Загружаю URL 'http://www.delphiexpert.ru'. Загрузил нормально. Сохраняю страницу (назвал 'de.html') в отдельную папку. Рисунки тоже сохраняются.правая кнопка - сохранить как.
не должно так быть. у меня все качает..
Perfect!!!Хром не умеет открывать mht файы. Открывайте IE
Возникла следующая проблема.Хром не умеет открывать mht файы. Открывайте IE
Обучение наступательной кибербезопасности в игровой форме. Начать игру!