Como tirar uma ScreenShot do WebBrowser.
Seguindo em uma série de dicas sobre o WebBrowser, hoje
vamos analisar como fotografar o mesmo, ou em outras palavras,
tirar um ScreenShot do WebBrowser.
Uma simples procedimento resolve o problema, veja o código:
Antes lembra-se de dar uses das units necessárias:
Winapi.ActiveX, SHDocVw, Winapi.Windows e Vcl.Graphics.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| 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; |
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;
Exemplo de uso:
Capturando a tela do WebBrowser e salvando na pasta do executável.
1
2
3
4
5
| procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowserScreenShot(WebBrowser1, ExtractFilePath(Application.ExeName) +
'meu_navegador.jpg');
end; |
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowserScreenShot(WebBrowser1, ExtractFilePath(Application.ExeName) +
'meu_navegador.jpg');
end;
Espero que seja útil a todos!
Qualquer dúvida ou sugestão, deixe nos comentários do post.
-
Giovani Da Cruz
-
2.910 views
- 0 comentários
- 13 de novembro de 2016
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo