



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; |
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; |
Espero que seja útil a todos!
Qualquer dúvida ou sugestão, deixe nos comentários do post.