Home > screen shot > Capturing a Screen Shot of a TWebBrowser Content (Web Page) in Delphi

Capturing a Screen Shot of a TWebBrowser Content (Web Page) in Delphi

Reference : http://delphi.about.com/od/vclusing/a/wb_scren_shot.htm

The TWebBrowser Delphi control provides access to the Web browser functionality from your Delphi apps – to allow you to create a customized Web browsing application or to add Internet, file and network browsing, document viewing, and data downloading capabilities to your applications.

Web Page Screen Shot

You might need to programmatically grab the screen shot of the current page loaded in the web browser control.A screen shot (screen capture) is a copy of the screen’s contents that can be saved as a graphics file. 
Web Browser screen shot is a graphics copy of the content on the web browser control – usually a web page (document).

The custom function WebBrowserScreenShot will capture the contents of a TWebBrower’s client area into a JPEG image and save it to a specified file.

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, nilnil, Application.Handle, bitmap.Canvas.Handle, @r, nilnil, 0) ;

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

Note: JPEG images are smaller when compared to BMPs – this is why the BMP object is converted to a JPG before saving to the disk.A sample usage: navigate to a web site in the form’s OnCreate event, take the screen shot in the webbrowser’s OnNavigateComplete2 event:

procedure TForm1.FormCreate(Sender: TObject) ;
begin
  WebBrowser1.Navigate(‘http://delphi.about.com&#8217;) ;
end;

procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant) ;
begin
  WebBrowserScreenShot(WebBrowser1,’c:\WebBrowserImage.jpg’) ;
end;

Note: the code above saves the “http://delphi.about.com&#8221; site’s screen shot to a file named WebBrowserImage.jpg on the C drive.

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: