function CapturePage(var bitmap : TBitmap) : integer;
var
ViewObject:IViewObject;
sourceDrawRect:TRect;
begin
result := -1;
if not assigned(bitmap) then
exit;
with form1.b do
begin
if assigned(Document) then
begin
try
Document.QueryInterface(IViewObject,ViewObject);
except
showmessage('DOCUMENT QUERY INTERFACE ERROR!');
exit;
end;
if ViewObject<>nil then
begin
try
bitmap.Width := form1.b.Width;
bitmap.PixelFormat := pf24bit;
bitmap.Height:= form1.b.Height;
sourceDrawRect:=Rect(0,0,form1.b.Width,form1.b.Height);
ViewObject.Draw(DVASPECT_CONTENT,1,nil,nil,0,bitmap.canvas.Handle,@sourceDrawRect,nil,nil,0);
result := 0;
finally
ViewObject._Release;
end
end
else
result:=0;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
b.Navigate(edit1.text);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
HTMLDocument: IHTMLDocument2;
PersistFile: IPersistFile;
begin
HTMLDocument := b.Document as IHTMLDocument2;
PersistFile := HTMLDocument as IPersistFile;
savedialog1.Filter := 'HTML|*.html;*.htm';
if savedialog1.Execute then
begin
PersistFile.Save(StringToOleStr(savedialog1.FileName), System.True);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
bmp : Tbitmap;
begin
bmp := Tbitmap.Create;
try
try
CapturePage(bmp);
except
showmessage('error occur when CapturePage');
end;
savedialog1.Filter := 'BMP|*.bmp';
if savedialog1.Execute then
begin
bmp.SaveToFile(savedialog1.FileName);
end;
finally
bmp.Free;
end;
end;