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

  05/13/2008, Yazar: Özgür Koca, Kategori: Delphi, Programlama

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







Bu yazıya puan verin: 1 Puan2 Puan3 Puan4 Puan5 Puan6 Puan7 Puan8 Puan9 Puan10 Puan


Biraz gürültü yapın





Not: Yazdığınız yorum yönetici tarafından onaylandıktan sonra yayınlanacaktır.


  Yorumlara eposta ile abone ol




  • Hakkında | İletişim | Wordpress.org | RSS | Abone Ol

  • (c) 2005-2009 Wordpress Tema: Tankado & Theme by Tankado.com