procedure
TForm1.Button1Click(Sender: TObject);
var
Doc: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
Doc : = WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document <> nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject <> nil then
try
Doc.Get_ParentWindow.Scroll( 0 , 0 ); // 跳到网页头
getjpg : = TBitMap.Create();
getjpg.PixelFormat : = pf24bit;
getjpg.Height : = doc.Body.getAttribute( ' scrollHeight ' , 0 );
getjpg.Width : = doc.Body.getAttribute( ' scrollwidth ' , 0 );
pdest : = getjpg.Canvas.Handle;
m : = Trunc(doc.Body.getAttribute( ' ScrollHeight ' , 0 ) / (doc.Body.getAttribute( ' offsetHeight ' , 0 ) - 20 ));
i : = Trunc(doc.Body.getAttribute( ' Scrollwidth ' , 0 ) / (doc.Body.getAttribute( ' offsetwidth ' , 0 ) - 20 ));
for i : = 0 to i do
begin
for m : = 0 to m 1 do
begin
a : = TBitMap.Create();
a.Height : = doc.Body.getAttribute( ' offsetHeight ' , 0 );
a.Width : = doc.Body.getAttribute( ' offsetwidth ' , 0 );
psour : = a.Canvas.handle;
sourceDrawRect : = Rect( 0 , 0 , a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT, 1 , nil , nil , Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil , nil , 0 );
bitblt(pdest, doc.Body.getAttribute( ' scrollLeft ' , 0 ), doc.Body.getAttribute( ' Scrolltop ' , 0 ), a.Width, a.Height, psour, 2 , 2 , srccopy);
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( ' scrollLeft ' , 0 ), doc.Body.getAttribute( ' offsetHeight ' , 0 ) doc.Body.getAttribute( ' Scrolltop ' , 0 ) - GetSystemMetrics(SM_CXVSCROLL) - 24 );
a.Free;
end ;
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( ' offsetwidth ' , 0 ) doc.Body.getAttribute( ' scrollLeft ' , 0 ) - GetSystemMetrics(SM_CXVSCROLL) - 24 , 0 );
end ;
jpg : = tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile( ' c:\test.jpg ' );
jpg.Free;
finally
ViewObject._Release;
end ;
except
end ;
end ;
var
Doc: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
Doc : = WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document <> nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject <> nil then
try
Doc.Get_ParentWindow.Scroll( 0 , 0 ); // 跳到网页头
getjpg : = TBitMap.Create();
getjpg.PixelFormat : = pf24bit;
getjpg.Height : = doc.Body.getAttribute( ' scrollHeight ' , 0 );
getjpg.Width : = doc.Body.getAttribute( ' scrollwidth ' , 0 );
pdest : = getjpg.Canvas.Handle;
m : = Trunc(doc.Body.getAttribute( ' ScrollHeight ' , 0 ) / (doc.Body.getAttribute( ' offsetHeight ' , 0 ) - 20 ));
i : = Trunc(doc.Body.getAttribute( ' Scrollwidth ' , 0 ) / (doc.Body.getAttribute( ' offsetwidth ' , 0 ) - 20 ));
for i : = 0 to i do
begin
for m : = 0 to m 1 do
begin
a : = TBitMap.Create();
a.Height : = doc.Body.getAttribute( ' offsetHeight ' , 0 );
a.Width : = doc.Body.getAttribute( ' offsetwidth ' , 0 );
psour : = a.Canvas.handle;
sourceDrawRect : = Rect( 0 , 0 , a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT, 1 , nil , nil , Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil , nil , 0 );
bitblt(pdest, doc.Body.getAttribute( ' scrollLeft ' , 0 ), doc.Body.getAttribute( ' Scrolltop ' , 0 ), a.Width, a.Height, psour, 2 , 2 , srccopy);
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( ' scrollLeft ' , 0 ), doc.Body.getAttribute( ' offsetHeight ' , 0 ) doc.Body.getAttribute( ' Scrolltop ' , 0 ) - GetSystemMetrics(SM_CXVSCROLL) - 24 );
a.Free;
end ;
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute( ' offsetwidth ' , 0 ) doc.Body.getAttribute( ' scrollLeft ' , 0 ) - GetSystemMetrics(SM_CXVSCROLL) - 24 , 0 );
end ;
jpg : = tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile( ' c:\test.jpg ' );
jpg.Free;
finally
ViewObject._Release;
end ;
except
end ;
end ;