::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 20:43:13, Hit : 4719, Vote : 1270
 화면캡처하기 Delphi3.0에서...


> 델파이 3.0에서
> 현재의 화면을 캡처하여 DB에 저장하려고 하는데
> 방법을 모르겠내요

안녕하세요  김영대입니다.
화면(DeskTop의 full screen)을 Capture하는 예제를 올립니다.
Capture하여 bmp 파일로 저장하는 예제입니다.
그리고 DB저장은 BLOB 필드를 다루는 내용이 많이 공개되어 있으니
생략합니다
그럼 좋은 결과 있기를 바랍니다.
(아래의 BitmapRect의 영역좌표를 바꾸면 DeskTop의 특정 영역만
Capture할 수 있습니다, full screen의 bmp 크기는 대략 938KB 입니다)


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  DeskTopDC:     HDc;
  DeskTopCanvas: TCanvas;
  BitmapRect:    TRect;
  Bitmap:        TBitmap;
begin
  try
    Bitmap        := TBitmap.Create; {BMP를 저장할 bitmap 생성}
    BitMap.Width  := Screen.Width;
    BitMap.Height := Screen.Height;
    BitmapRect    := Rect(0, 0, Screen.Width, Screen.Height);  {full screen 영역}

    {전체 window의 device context(DC) 을 얻는다}
    DeskTopDC     := GetWindowDC(GetDeskTopWindow);
    DeskTopCanvas := TCanvas.Create;
    DeskTopCanvas.Handle := DeskTopDC; {전체 window의 canvas를 얻습니다}

    // BitmapRect영역의 DeskTopCanvas에서 BitmapRect영역의 Bitmap.Canvas로
    // 복사받습니다
    Bitmap.Canvas.CopyRect(BitmapRect, DeskTopCanvas, BitmapRect);

    if SaveDialog1.Execute then
      Bitmap.SaveToFile(SaveDialog1.FileName);
  finally
    ReleaseDC(GetDeskTopWindow, DeskTopDC);
    DeskTopCanvas.Free;
    Bitmap.Free;
  end;
end;

end.






651   [윈도우즈 API] Windows 가 Shutdown 되는지 검사하기  김영대 2003/03/04 4287 1293
650   [일반/컴포넌트] 마우스로 ProgressBar의 Position 바꾸기  김영대 2006/02/28 5003 1292
649   [일반/컴포넌트] RichEdit 에 URL link 만들기  김영대 2004/08/04 5796 1292
648   [일반/컴포넌트] Treeview의 수평 스크롤바 감추고 스크롤 막기  김영대 2006/03/22 5648 1290
647   [윈도우즈 API] Windows Desktop에 직접 그림을 그리고(draw) 지우기(refresh)  김영대 2003/03/04 4630 1290
646   [시스템] 여러개의 DOS 명령어를 차례데로 실행하기  김영대 2004/10/21 6398 1289
645   [윈도우즈 API] 현재 키보드 입력 언어 구하기  김영대 2004/07/24 4812 1289
644   [윈도우즈 API] 다른 프로그램의 구동 디렉토리 알아내기  김영대 2003/03/07 4775 1287
643   [시스템] 파일의 소유자와 도메인 구하기2  김영대 2004/09/25 4715 1286
642   [윈도우즈 API] 윈도우즈 탐색기에서 "Copy" 될 파일목록 구하기  김영대 2003/03/07 4871 1286
641   [일반/컴포넌트] TOpenDialog 의 '선택','취소' 버튼 이름 바꾸기  김영대 2003/03/07 4166 1286
640   [시스템] 윈도우즈 화면 잠그기  김영대 2004/08/03 5064 1285
639   [일반/컴포넌트] Access Violation at address ?????? 로부터 소스위치 알기  김영대 2003/03/07 6525 1284
638   [시스템] 파일이 다른 프로그램에 의해 사용중인지 검사  김영대 2003/03/07 5771 1283
637   [윈도우즈 API] PrintScreen(PrtSc)키의 동작 막기  김영대 2003/03/07 5731 1282
636   [윈도우즈 API] 4가지 윈도우즈 관련 폴더의 path 구하기  김영대 2003/04/08 5681 1281
635   [일반/컴포넌트] ListView의 타이틀 폰트 바꾸기  김영대 2005/03/31 5366 1280
634   [시스템] 드라이브 포맷(Format) API 함수  김영대 2003/03/04 4726 1280
633   [COM/OLE] TWebBrowser에서 JavaScript 호출하기2  김영대 2004/10/10 6271 1279
632   [일반/컴포넌트] 두개의 RichEdit 사이에 내용 복사하기  김영대 2003/03/06 5443 1279
631   [시스템] 프로그램에서 화면모드 변경하기  김영대 2003/03/04 4673 1279
630   [일반/컴포넌트] 객체의 valid검사 Assigned() 대체  김영대 2005/07/29 4897 1277
629   [일반/컴포넌트] MIME 타입에 해당하는 파일 확장자 구하기  김영대 2004/11/18 4795 1277
628   [윈도우즈 API] Canvas의 색상수  김영대 2003/03/04 4119 1277
627   [일반/컴포넌트] StringGrid의 Cell에 입력 값 제한 하기  김영대 2003/03/04 5915 1277
626   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4109 1276
625   [일반/컴포넌트] 명령행 인자(command line argument) 사용하기  김영대 2003/03/05 4689 1276
624   [시스템] 한글 한 음절을 초성,중성,종성 음소로 분해하기('김' => 'ㄱ'+'ㅣ'+'ㅁ')  김영대 2004/10/22 7941 1275
623   [윈도우즈 API] 전체 화면(Full Screen) 만들기  김영대 2003/03/29 4987 1275
622   [일반/컴포넌트] 해상도(screen resolution)를 변경했는지 검사  김영대 2003/03/07 4495 1273
621   [COM/OLE] IE의 속성을 변경하여 뛰우기  김영대 2006/02/28 5455 1271
620   [COM/OLE] TWebBroswer 에서 오른쪽 마우스 클릭 막기  김영대 2004/11/24 5116 1271
619   [시스템] 윈도우즈에 설치된 모든 인증서(certificate) 정보 읽어오기  김영대 2004/10/29 5712 1271
618   [COM/OLE] ActiveForm의 OnDestroy 대용  김영대 2005/04/21 5435 1270
  [윈도우즈 API] 화면캡처하기 Delphi3.0에서...  김영대 2003/03/04 4719 1270
616   [네트웍/인터넷] 네트워크 공유 설정/공유 사용 권한/해제 하기 (Windows NT/2000)  김영대 2004/11/06 5507 1268
615   [네트웍/인터넷] 소켓의 전송크기는 얼마 ?  김영대 2003/03/05 5199 1267
614   [데이터베이스] Stored Procedure 작성을 어떻게 하나  김영대 2003/03/04 4911 1266
613   [윈도우즈 API] 떠있는 모든 Microsoft Internet Explorer 죽이기  김영대 2003/03/29 4479 1265
612   [윈도우즈 API] Windows error beep 켜기/끄기  김영대 2003/03/07 4441 1265

[1][2][3][4][5][6][7][8] 9 [10]..[25] [다음 10개]
 

Copyright 1999-2020 Zeroboard / skin by zero