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.
[sourcecode language=’delphi’]

uses
ActiveX;

procedure WebBrowserScreenShot(const wb: TWebBrowser; const fileName: TFileName) ;
var
viewObject : IViewObject;
r : TRect;
bitmap : TBitmap;
begin
if wb.Document <> nil then
begin
wb.Document.QueryInterface(IViewObject, viewObject) ;
if Assigned(viewObject) then
try
bitmap := TBitmap.Create;
try
r := Rect(0, 0, wb.Width, wb.Height) ;

bitmap.Height := wb.Height;
bitmap.Width := wb.Width;

viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;

with TJPEGImage.Create do
try
Assign(bitmap) ;
SaveToFile(fileName) ;
finally
Free;
end;
finally
bitmap.Free;
end;
finally
viewObject._Release;
end;
end;
end;
[/sourcecode]

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 yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.