About.com birçok konuda olduğu gibi Delphi‘de yazılım geliştirme konularıyla ilgili yazılar yayınlıyor. Makaleler ve çeşitli kod örneklerinden oluşan yazılar ele aldığı konuların kullanışlılığı ve anlatımındaki yalınlık ile akılda kalıyor. Aşağıda, benim de zamanında çok aradığım ve bazılarının işine yarayabilecek, web sitelerinin ekran görüntüsünü çekmek için bir kod yer alıyor. Kod TWebBrowser nesnesi ile taranan sayfaların ekran görüntüsünü kaydetmek için kullanılıyor.
Prosedür; Rect ile belirlenen dikdörtgen bölgenin viewObject.Draw metodu ile ekran görüntüsünü bitmap olarak elde ettikten sonra TJPEGImage sınıfı ile jpg formatında kaydediyor.
<strong> uses</strong> ActiveX;</strong> <strong><strong>procedure</strong> WebBrowserScreenShot(<strong>const</strong> wb: TWebBrowser; <strong>const</strong> fileName: TFileName) ; <strong>var</strong> viewObject : IViewObject; r : TRect; bitmap : TBitmap; <strong>begin</strong> <strong>if</strong> wb.Document <> <strong>nil then</strong> <strong>begin</strong> wb.Document.QueryInterface(IViewObject, viewObject) ; <strong>if</strong> Assigned(viewObject) <strong>then</strong> <strong>try</strong> bitmap := TBitmap.Create; <strong>try</strong> r := Rect(0, 0, wb.Width, wb.Height) ;</strong> <strong>bitmap.Height := wb.Height; bitmap.Width := wb.Width;</strong> <strong>viewObject.Draw(DVASPECT_CONTENT, 1, <strong>nil</strong>, <strong>nil</strong>, Application.Handle, bitmap.Canvas.Handle, @r, <strong>nil</strong>, <strong>nil</strong>, 0) ;</strong> <strong><strong>with</strong> TJPEGImage.Create <strong>do</strong> <strong>try</strong> Assign(bitmap) ; SaveToFile(fileName) ; <strong>finally</strong> Free; <strong>end</strong>; <strong>finally</strong> bitmap.Free; <strong>end</strong>; <strong>finally</strong> viewObject._Release; <strong>end</strong>; <strong>end</strong>; <strong>end</strong>; <strong>
onNavigateComplete olayında da aşağıdaki kod kullanılabilir:
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant) ;
begin
WebBrowserScreenShot(WebBrowser1,’c:\WebBrowserImage.jpg’) ;
end;
(Capturing a Screen Shot of a TWebBrowser Content (Web Page) in Delphi)
Kaynak: http://delphi.about.com/od/vclusing/a/wb_scren_shot.htm
