//针对单框架网页 //use OleCtrls, SHDocVw, MSHtml, ActiveX, JPEG function TForm1.SnapWebSite(AWebBrowser: TWebBrowser; JpegFileName: string): Boolean; var Doc : IHTMLDocument2; ViewObject : IViewObject; sourceDrawRect: TRect; a, getjpg : TBitMap; i, m : integer; pdest, psour : hbitmap; jpg : tjpegimage; begin Result := False; if AWebBrowser.Document <> nil then Doc := AWebBrowser.Document as IHTMLDocument2; try AWebBrowser.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(JpegFileName + '.jpg'); jpg.Free; Result := True; finally ViewObject._Release; end; except end; end;