'클립보드'에 해당되는 글 1건

  1. 2012.10.23 클립보드

클립보드

APP 2012. 10. 23. 19:56 |
 
클립보드에 있는 이미지 찍기 

uses clipbrd; procedure drawFromClip; begin with ClipBoard do begin if HasFormat(CF_BITMAP) then begin Image1.Picture.Bitmap.Assign(ClipBoard) end else if HasFormat(CF_PICTURE) then Image1.Picture.Assign(ClipBoard) else if HasFormat(CF_METAFILEPICT) then Image1.Picture.Metafile.Assign(ClipBoard); end; end;

 
클립보드에 넣기, 꺼내기


unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, clipbrd; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } procedure WMDrawClipboard(var Msg: TMessage) ; message WM_DRAWCLIPBOARD; procedure WMChangeCBChain(var Msg: TMessage) ; message WM_CHANGECBCHAIN; public { Public declarations } end; var Form1: TForm1; NextInChain : THandle; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin NextInChain := SetClipboardViewer(Handle) ; end; procedure TForm1.FormDestroy(Sender: TObject); begin ChangeClipboardChain(Handle, NextInChain) ; end; // 클립보드 내용이 바뀌면 발생하는 메세지 procedure TForm1.WMDrawClipboard(var Msg:TMessage) ; begin if Clipboard.HasFormat(cf_text) then begin Memo1.Lines.Clear; Memo1.PasteFromClipboard; end else begin //do something with other clipboard formats end; //pass the message on to the next window if NextInChain <> 0 then SendMessage(NextInChain, WM_DrawClipboard, 0, 0) end; // 다른 클립보드 뷰어가 바뀐상황을 체크하고 다음 체인에게도 알려준다 procedure TForm1.WMChangeCBChain(var Msg: TMessage) ; var Remove, Next: THandle; begin Remove := Msg.WParam; Next := Msg.LParam; with Msg do if NextInChain = Remove then NextInChain := Next else if NextInChain <> 0 then SendMessage(NextInChain, WM_ChangeCBChain, Remove, Next) end; end.





클립보드 내용 바뀐거 체크


unit Unit1;

interface

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

type

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    procedure WMDrawClipboard(var Msg: TMessage) ; message WM_DRAWCLIPBOARD;
    procedure WMChangeCBChain(var Msg: TMessage) ; message WM_CHANGECBCHAIN;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  NextInChain : THandle;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  NextInChain := SetClipboardViewer(Handle) ;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ChangeClipboardChain(Handle, NextInChain) ;
end;

// 클립보드 내용이 바뀌면 발생하는 메세지
procedure TForm1.WMDrawClipboard(var Msg:TMessage) ;
begin
 if Clipboard.HasFormat(cf_text) then
 begin
  Memo1.Lines.Clear;
  Memo1.PasteFromClipboard;
 end
 else
 begin
  //do something with other clipboard formats
 end;
 //pass the message on to the next window
 if NextInChain <> 0 then
  SendMessage(NextInChain, WM_DrawClipboard, 0, 0)
end;

// 다른 클립보드 뷰어가 바뀐상황을 체크하고 다음 체인에게도 알려준다
procedure TForm1.WMChangeCBChain(var Msg: TMessage) ;
var
  Remove, Next: THandle;
begin
  Remove := Msg.WParam;
  Next := Msg.LParam;
 with Msg do
  if NextInChain = Remove then
   NextInChain := Next
  else if NextInChain <> 0 then
   SendMessage(NextInChain, WM_ChangeCBChain, Remove, Next)
end;

end.



'APP' 카테고리의 다른 글

GUID 생성  (0) 2012.10.23
현재 떠있는 모든 창 캡션 구하기  (0) 2012.10.23
파일명으로 아이콘 구하기  (0) 2012.10.23
TEXT 파일 제어  (0) 2012.10.23
프린트 스크린 키 눌렸는지 확인  (0) 2012.10.23
Posted by ezmind
: