Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Упаковать BD Accuracer
Категория: Базы данных
Категория: Базы данных
Взять часть URL, которая следует после названия сайта
Категория: Интернет и Сети
Категория: Интернет и Сети
Сохраняем Bitmap в поле dbase
Категория: Базы данных
Категория: Базы данных
Компонент SpeedButton
Категория: Компоненты
Категория: Компоненты
Получить версию программы VersionInfo
Категория: Приложение
Категория: Приложение
Компоненты ToolBar и PageScroller
Категория: Компоненты
Категория: Компоненты
Программно скрыть MainMenu
Категория: Компоненты
Категория: Компоненты
Узнать запущен ли сервис FireBird
Категория: Интернет и Сети
Категория: Интернет и Сети
Пароль на ADO
Категория: Базы данных
Категория: Базы данных
Как показать balloon tooltips в программе
Категория: Приложение
Категория: Приложение
Delphi - База Знаний: Сохранение странички в файл из TWebBrowser
TWebBrowser.Document включает в себя IPersistStreamInit который содержит метод Save(). Всё, что нам нужно знать, это как использовать данный метод с объектом, который включён в IStream. Для этого просто воспользуемся TStreamAdapter.
Обратите внимание, что интерфейсы IPersistStreamInit и IStream объявлены внутри ActiveX
unit main;
interface
uses
Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, OleCtrls,
SHDocVw, ExtCtrls;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
SaveDialog1: TSaveDialog;
Panel1: TPanel;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure WebBrowser1NavigateComplete2(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure WebBrowser1StatusTextChange(Sender: TObject;
const Text: WideString);
procedure WebBrowser1TitleChange(Sender: TObject;
const Text: WideString);
procedure Button1Click(Sender: TObject);
private
procedure DoNavigateURL(const URLString: string);
procedure SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser);
end;
var
Form1: TForm1;
implementation
uses ActiveX;
{$R *.DFM}
procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
Button1.Enabled := True;
end;
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Button1.Enabled := False;
end;
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
const Text: WideString);
begin
Label1.Caption := Text;
end;
procedure TForm1.WebBrowser1TitleChange(Sender: TObject;
const Text: WideString);
begin
Caption := Text;
end;
procedure TForm1.DoNavigateURL(const URLString: string);
var
VUrl: OleVariant;
begin
if URLString = '' then
Exit;
VUrl := URLString;
WebBrowser1.Navigate2(VUrl);
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then
begin
Key := 0;
TEdit(Sender).SelectAll;
DoNavigateURL(TEdit(Sender).Text);
end;
end;
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
{ we are passing soReference to TStreamAdapter contructor parameter,
it is our reponsibility to destroy the stream object. }
FileStream.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
SaveHTMLSourceToFile(SaveDialog1.FileName, WebBrowser1);
end;
end.
Сохранение вместе с исходником всех файлов (.CSS, JPG, GIF Etc..):
try
WebBrowser1.ExecWB(4, 0);
except
on E: Exception do msError:=true;
end;