亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? asgcapture.pas

?? Apprehend Screen Capture Component Version 4.2 A non-visible component to capture images. Freeware w
?? PAS
字號:
{----------------------------------------------------------------------------
| Library: ASG Screen Capture ( Apprehend 2000 )
| Adirondack Software & Graphics ScreenCapture Component
| for Delphi 5 (C) Copyright Adirondack Software & Graphics 1996-2000
|
| Module: ASGCapture
|
| Description: TASGScreenCapture class and non-visible component.
|
| Contact Information:
|  The lateset version will always be available on the web at:
|    http://www.software.adirondack.ny.us
|  If you have any questions, comments or suggestions, you may contact us at
|  w2m@netheaven.com
|
| Known Problems: None
|
| History: 1996-1999 - Developed screen capture routines
|          July 4, 2000. William Miller, first BETA version
|          July 13, 2000. William Miller, 2nd BETA version
|          Changed CaptureRect.Pas to paint the rubberband
|          on the form instead of a TImage to eliminate screen flicker.
|          July 15, 2000. William Miller, 3nd BETA version
|          Added animated rubberbanding and version property
|          September 21, 2000. William Miller. Compiled Release 1.0
|
| Installation:  This component has only been tested with Delphi 5
|                1. Install the ASG_Capture package
|                2. Be sure you set the path to the folder
|                containing the component in the Delphi 5 IDE
|
|---------------------------------------------------------------------------}

unit ASGCapture;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, Menus, Clipbrd;

const
  ASG_COMPONENT_VERSION = 'TASGScreenCapture v1.0';

type

  TASGScreenCapture = class ( TComponent )
  private
    fAutomatic: Boolean; // send image to clipboard
    fBitmap: TBitmap; // captured bitmap
    fDelay: Integer; // delay for screen refresh - may be set by enduser in Delay property
    fMinimized: Boolean;
    fOnCapture: TNotifyEvent; // fires after capture
    procedure SetDelay ( const Value: Integer );
    procedure SetAutomatic ( const Value: Boolean );
    procedure SetMinimized ( const Value: Boolean );
    function GetVersion: string;
    procedure SetVersion ( const Val: string );
    procedure CopyToClipboard;
  public
    constructor Create ( AOwner: TComponent );override;
    destructor Destroy;override;
    // Capture the desktop
    function CaptureDesktop: TBitmap;
    // Capture a bitmap image of the active window
    function CaptureActiveWindow: TBitmap;
    // Capture a bitmap of a selected object (Window, button, toolbar)
    function CaptureObject: TBitmap;
    // Capture a bitmap of a selected area
    function CaptureSelection: TBitmap;
  published
        // If Automatic is true then copy captured bitmap to clipboard
    property Auto: Boolean read fAutomatic write fAutomatic default True;
       // Setting for Screen Refresh Time
    property Delay: Integer read fDelay write fDelay default 500;
      // If Minimize is true then the mainform of the application is
      // minimized and restored during screen capture
    property Minimize: Boolean read fMinimized write fMinimized default True;
    property OnCapture: TNotifyEvent read fOnCapture write fOnCapture;
      // Show component version
    property Version: string read GetVersion write SetVersion stored FALSE;
  end;

procedure Register;

implementation

uses
  CaptureTheObject, { for CaptureTheObject Form  - needed for cursor }
  CaptureTheRect; { for CaptureTheRect Form  - needed for animated rubberbanding }

// create the component
constructor TASGScreenCapture.Create ( AOwner: TComponent );
begin
  inherited Create ( AOwner );
  fAutomatic := True;
  fMinimized := True;
  fDelay := 500;
  fBitmap := TBitmap.Create;
  SetDelay(fDelay);
  SetAutomatic(fAutomatic);
  SetMinimized(FMinimized);
end;

{--------------------------------------------------------------------------}
// destroy the component
destructor TASGScreenCapture.Destroy;
begin
  inherited Destroy;
  fBitmap.Free;
end;

{--------------------------------------------------------------------------}
// set delay for screen refresh
procedure TASGScreenCapture.SetDelay ( const Value: Integer );
begin
  fDelay := Value;
end;

{--------------------------------------------------------------------------}

procedure TASGScreenCapture.SetMinimized ( const Value: Boolean );
begin
  if Value <> fMinimized then
    fMinimized := Value;
end;

{--------------------------------------------------------------------------}

procedure TASGScreenCapture.SetAutomatic ( const Value: Boolean );
begin
  fAutomatic := Value;
end;

{--------------------------------------------------------------------------}

function TASGScreenCapture.GetVersion: string;
begin
  Result := ASG_COMPONENT_VERSION;
end;

{--------------------------------------------------------------------------}

procedure TASGScreenCapture.SetVersion ( const Val: string );
begin
  { empty write method, just needed to get it to show up in Object Inspector }
end;

{--------------------------------------------------------------------------}

// copies bitmap to clipboard
procedure TASGScreenCapture.CopyToClipboard;
begin
  Clipboard.Assign ( fBitmap );
end;

{--------------------------------------------------------------------------}
// Captures Image of Screen or windows Desktop
function TASGScreenCapture.CaptureDesktop: TBitmap;
var
  Handles: HWND;
  ScreenDC: HDC;
  Rect: TRect;
  lpPal: PLogPalette;
begin
    // Get mainform out of the way
  if fMinimized then
    Application.Minimize;
    // Give screen time to refresh by delay
  Sleep ( fDelay );
  Handles := GetDesktopWindow ( );
  ScreenDC := GetDC ( Handles );
  GetWindowRect ( Handles, Rect );
  // do we have a palette device? - Thanks to Joe C. Hecht
  if ( GetDeviceCaps ( ScreenDC, RASTERCAPS ) and RC_PALETTE = RC_PALETTE ) then
  begin
    // allocate memory for a logical palette
    GetMem ( lpPal, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ) );
    // zero it out to be neat
    FillChar ( lpPal^, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ), #0 );
    // fill in the palette version
    lpPal^.palVersion := $300;
    // grab the system palette entries
    lpPal^.palNumEntries :=
      GetSystemPaletteEntries ( ScreenDC, 0, 256, lpPal^.palPalEntry );
    if ( lpPal^.PalNumEntries <> 0 ) then
      // create the palette
      fBitmap.Palette := CreatePalette ( lpPal^ );
    FreeMem ( lpPal, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ) );
  end;
  try
    fBitmap.Width := Rect.Right - Rect.Left;
    fBitmap.Height := Rect.Bottom - Rect.Top;
    BitBlt ( fBitmap.Canvas.Handle, 0, 0, fBitmap.Width, fBitmap.Height, ScreenDC, 0, 0, SRCCOPY );
    ReleaseDC ( Handles, ScreenDC );
    Result := TBitmap.Create;
    Result.Assign ( fBitmap );
    if fAutomatic then CopyToClipboard;
    if Assigned ( fOnCapture ) then fOnCapture ( Self );
  finally
    ReleaseDC ( Handles, ScreenDC );
    if fMinimized then
      // Restore mainform to original state
      Application.Restore;
  end;
end;

{--------------------------------------------------------------------------}
// Capture Active Window. If window not active then it captures desktop
function TASGScreenCapture.CaptureActiveWindow: TBitmap;
var
  Handles: HWnd;
  Rect: TRect;
  ScreenDC: HDC;
  lpPal: PLogPalette;
begin
  // Get mainform out of the way
  if fMinimized then
    Application.Minimize;
  // Give screen time to refresh by delay
  Sleep ( fDelay );
  Handles := GetForegroundWindow ( );
  ScreenDC := GetWindowDC ( Handles );
  // do we have a palette device? - Thanks to Joe C. Hecht
  if ( GetDeviceCaps ( ScreenDC, RASTERCAPS ) and RC_PALETTE = RC_PALETTE ) then
  begin
    // allocate memory for a logical palette
    GetMem ( lpPal, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ) );
    // zero it out to be neat
    FillChar ( lpPal^, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ), #0 );
    // fill in the palette version
    lpPal^.palVersion := $300;
    // grab the system palette entries
    lpPal^.palNumEntries :=
      GetSystemPaletteEntries ( ScreenDC, 0, 256, lpPal^.palPalEntry );
    if ( lpPal^.PalNumEntries <> 0 ) then
      // create the palette
      fBitmap.Palette := CreatePalette ( lpPal^ );
    FreeMem ( lpPal, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ) );
  end;
  GetWindowRect ( Handles, Rect );
  try
    fBitmap.Width := Rect.Right - Rect.Left;
    fBitmap.Height := Rect.Bottom - Rect.Top;
    BitBlt ( fBitmap.Canvas.Handle, 0, 0, fBitmap.Width, fBitmap.Height, ScreenDC, 0, 0, SRCCOPY );
    ReleaseDC ( Handles, ScreenDC );
    Result := TBitmap.Create;
    Result.Assign ( fBitmap );
    if fAutomatic then CopyToClipboard;
    if assigned ( fOnCapture ) then fOnCapture ( Self );
  finally
    ReleaseDC ( Handles, ScreenDC );
      // Restore mainform to original state
    if fMinimized then
      Application.Restore;
  end;
end;

{--------------------------------------------------------------------------}
// Capture Selected Object
function TASGScreenCapture.CaptureObject: TBitmap;
var
  Rect: TRect;
  P1: TPoint;
  Handles: HWnd;
  ScreenDC: HDC;
  lpPal: PLogPalette;
begin
  Result := nil;
  // Get mainform out of the way
  if fMinimized then
    Application.Minimize;
  // Give screen time to refresh by delay
  Sleep ( Delay );
  CaptureObjectForm := TCaptureObjectForm.Create ( Application );
  try
    if CaptureObjectForm.ShowModal = mrOK then
    begin
      Sleep ( Delay );
        // Get cursor position
      GetCursorPos ( P1 );
      Handles := WindowFromPoint ( P1 );
        // Get mainform out of the way
      GetWindowRect ( Handles, Rect );
      with fBitmap, Rect do
      begin
        Width := Right - Left;
        Height := Bottom - Top;
        ScreenDC := GetDC ( 0 );
        // do we have a palette device? - Thanks to Joe C. Hecht
        if ( GetDeviceCaps ( ScreenDC, RASTERCAPS ) and RC_PALETTE = RC_PALETTE ) then
        begin
          // allocate memory for a logical palette
          GetMem ( lpPal, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ) );
          // zero it out to be neat
          FillChar ( lpPal^, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ), #0 );
         // fill in the palette version
          lpPal^.palVersion := $300;
         // grab the system palette entries
          lpPal^.palNumEntries :=
            GetSystemPaletteEntries ( ScreenDC, 0, 256, lpPal^.palPalEntry );
          if ( lpPal^.PalNumEntries <> 0 ) then
          // create the palette
            fBitmap.Palette := CreatePalette ( lpPal^ );
          FreeMem ( lpPal, sizeof ( TLOGPALETTE ) + ( 255 * sizeof ( TPALETTEENTRY ) ) );
        end;
      end;

      BitBlt ( fBitmap.Canvas.Handle, 0, 0, fBitmap.Width, fBitmap.Height, ScreenDC, Rect.Left, Rect.Top,
        SRCCOPY );
      try
        // copy bitmap to function result
        Result := TBitmap.Create;
        Result.Assign ( fBitmap );
        if fAutomatic then CopyToClipboard;
        if Assigned ( fOnCapture ) then fOnCapture ( Self );
      finally
        ReleaseDC ( 0, ScreenDC );
      end;
    end;
  finally
      // Restore mainform to original state
    if fMinimized then
      Application.Restore;
  end;
end;

{--------------------------------------------------------------------------}
// Capture Selection
function TASGScreenCapture.CaptureSelection: TBitmap;
begin
  Result := nil;
    // Get mainform out of the way
  if fMinimized then
    Application.Minimize;
   // Give screen time to refresh by delay
  Sleep ( Delay );
  // Create and show form to capture Rect
  CaptureRectForm := TCaptureRectForm.Create ( Application );
  try
    if CaptureRectForm.ShowModal = mrOK then
    begin
      Sleep ( Delay );
      Result := TBitmap.Create;
      FBitmap.Assign ( CaptureRectForm.RectBitmap );
      Result.Assign ( fBitmap );
      if fAutomatic then CopyToClipboard;
      if Assigned ( fOnCapture ) then fOnCapture ( Self );
    end;
  finally
       // Restore mainform to original state
    if fMinimized then
      Application.Restore;
  end;
end;

{--------------------------------------------------------------------------}

procedure Register;
begin
  RegisterComponents ( 'ASG', [ TASGScreenCapture ] );
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产98色在线|日韩| 欧美国产禁国产网站cc| 理论电影国产精品| 久久精品水蜜桃av综合天堂| 99久久99久久精品免费看蜜桃| 亚洲午夜电影在线观看| 久久亚洲一区二区三区明星换脸 | 亚洲视频一二三| 欧美猛男超大videosgay| 国产在线精品一区二区三区不卡 | 欧美一区二区三区四区视频| 国产精品996| 亚洲高清在线精品| 欧美激情自拍偷拍| 制服丝袜激情欧洲亚洲| 91在线丨porny丨国产| 麻豆高清免费国产一区| 亚洲美女免费视频| 国产无人区一区二区三区| 欧美日韩高清一区二区不卡| av电影在线不卡| 狠狠色丁香婷综合久久| 亚洲成av人片在线| 综合精品久久久| 久久精品一区二区三区不卡牛牛 | 亚洲欧美激情一区二区| xf在线a精品一区二区视频网站| 在线观看亚洲a| 波多野结衣在线一区| 国内欧美视频一区二区| 日韩av电影天堂| 亚洲综合激情网| 国产精品理伦片| 国产视频一区二区在线| 欧美xxxxxxxx| 欧美成人精品1314www| 欧美日韩精品一区视频| 在线视频一区二区免费| av一二三不卡影片| www.日韩大片| 成人动漫一区二区在线| 国产精品18久久久久久vr| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲一区影音先锋| 一区二区三区鲁丝不卡| 亚洲视频免费观看| 亚洲欧美一区二区三区孕妇| 国产精品每日更新在线播放网址| 久久久另类综合| 久久免费看少妇高潮| 久久一区二区三区四区| 久久久久久久久蜜桃| 久久一留热品黄| 久久综合久久鬼色中文字| 久久影视一区二区| 国产欧美精品一区二区三区四区 | 色欧美88888久久久久久影院| 99久久国产综合精品麻豆 | 欧美日韩你懂的| 欧美日韩一本到| 欧美一区二区三区男人的天堂| 91超碰这里只有精品国产| 欧美夫妻性生活| 日韩欧美成人一区二区| 欧美精品一区二区三区蜜臀 | k8久久久一区二区三区 | 国产不卡视频在线观看| 成人听书哪个软件好| av在线不卡观看免费观看| 一本色道亚洲精品aⅴ| 在线观看视频一区二区欧美日韩| 欧美午夜寂寞影院| 欧美一区二区三区视频免费播放 | 久久免费精品国产久精品久久久久| 日韩一级二级三级| 日韩美一区二区三区| 亚洲精品在线免费观看视频| 久久久国产一区二区三区四区小说| 国产视频一区二区在线| 亚洲精品免费一二三区| 日韩影院精彩在线| 国产麻豆精品久久一二三| 成人黄色电影在线| 欧美性受极品xxxx喷水| 日韩精品一区二区三区在线| 国产人久久人人人人爽| 中文字幕一区二区三区不卡在线| 一区二区三区中文免费| 麻豆久久久久久| av成人老司机| 欧美一区二区三区在线看| 婷婷综合另类小说色区| 美女诱惑一区二区| k8久久久一区二区三区| 欧美日本在线一区| 亚洲视频香蕉人妖| 尤物av一区二区| 乱一区二区av| 99久久精品99国产精品| 欧美一区二区黄色| 中文字幕一区二区在线播放| 婷婷成人综合网| 不卡高清视频专区| 欧美一区二区三区免费观看视频| 国产精品美女久久久久aⅴ| 天天av天天翘天天综合网| 成人手机在线视频| 日韩一区二区精品在线观看| 国产精品高清亚洲| 美女诱惑一区二区| 91高清视频在线| 国产色婷婷亚洲99精品小说| 午夜av电影一区| 99riav久久精品riav| 亚洲精品一区二区三区四区高清| 亚洲六月丁香色婷婷综合久久| 国产一区二区三区在线观看免费| 91国产视频在线观看| 中文字幕高清一区| 老司机精品视频导航| 欧美中文字幕亚洲一区二区va在线| 国产日产精品1区| 美国十次综合导航| 欧美日韩五月天| 亚洲三级电影网站| 大白屁股一区二区视频| 精品国产免费一区二区三区四区 | 91丨九色丨黑人外教| 久久午夜羞羞影院免费观看| 首页综合国产亚洲丝袜| 欧美自拍丝袜亚洲| 中文字幕在线不卡国产视频| 国产精品自在欧美一区| 欧美不卡123| 日本欧美一区二区在线观看| 欧美中文字幕久久| 亚洲精品国产一区二区精华液| 成人性生交大合| 国产亚洲一区二区三区四区| 美国一区二区三区在线播放| 91麻豆精品国产91久久久久| 亚洲综合成人在线视频| 日本韩国欧美一区二区三区| 亚洲天堂福利av| av电影在线观看一区| 国产精品不卡在线| www.日韩大片| 亚洲欧美另类小说| 色综合久久久久久久久久久| 亚洲女性喷水在线观看一区| aa级大片欧美| 亚洲女同ⅹxx女同tv| 91在线观看高清| 一区二区三区四区在线播放| 欧美在线观看一区二区| 一级中文字幕一区二区| 在线这里只有精品| 久久久久综合网| 日本一不卡视频| 7777女厕盗摄久久久| 日韩中文字幕亚洲一区二区va在线| 欧美日韩日日骚| 日本不卡一区二区三区高清视频| 欧美一区二区成人6969| 奇米精品一区二区三区在线观看| 91精品黄色片免费大全| 久久成人免费电影| 国产午夜精品一区二区三区四区| 丁香另类激情小说| 亚洲男人的天堂在线观看| 欧美综合在线视频| 日韩精品成人一区二区三区| 欧美不卡123| 成人av综合一区| 亚洲一区二区欧美激情| 亚洲天堂成人在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲国产日韩精品| 日韩精品一区二区三区swag | 精品一区二区在线视频| 国产午夜精品一区二区三区四区| www.性欧美| 视频一区中文字幕国产| 久久久久久97三级| 欧美激情一区二区三区在线| 91九色02白丝porn| 午夜精品久久久久久久久久久| 日韩欧美国产综合一区| 成人一区二区三区| 亚洲一二三四在线| 精品国产青草久久久久福利| 99re热这里只有精品视频| 午夜精品在线看| 日本一区免费视频| 精品视频999| 国产剧情一区在线| 亚洲精选在线视频| 久久综合国产精品| 欧美色大人视频| 大尺度一区二区|