zoukankan      html  css  js  c++  java
  • Capturing a Screen Shot of a TWebBrowser Content (Web Page) in Delphi

    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, 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;
    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') ;
    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" site's screen shot to a file named WebBrowserImage.jpg on the C drive.
  • 相关阅读:
    Python:在一个moudle如何引入另一个moudle下面的包
    RobotFramework做自动化中,能定位到iFrame里面,怎么在iFrame里面输入文字?
    RobotFramework框架做自动化的过程中,遇到不能选择下拉框问题
    雕刻机虚拟仿真及上位机设计(Labview上位机+Proteus仿真)
    医学成像原理——NMR/MRI成像基础
    数字图像处理(二) 灰度变换与空域滤波
    数字图像处理(一) 数字图像基础
    Python爬虫笔记
    python数据分析-第一周
    pyhton-web开发
  • 原文地址:https://www.cnblogs.com/iihe602/p/1777693.html
Copyright © 2011-2022 走看看