Delphi ile web sayfasının ekran görüntüsünü almak

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.

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

Yazar: Özgür Koca

Yazar - Tankado.com

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.