剪切板-监视剪贴板


 

相关资料:

http://user.qzone.qq.com/513187410/blog/1265981516 

 

实例原码:

 1 unit Unit1;  2 
 3 interface
 4 
 5 uses
 6  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  7  Dialogs, StdCtrls, ExtCtrls,  8   Clipbrd, jpeg; //Clipboard使用
 9 
10 type
11   TForm1 = class(TForm) 12  Image1: TImage; 13  ListBox1: TListBox; 14  Image2: TImage; 15     procedure FormCreate(Sender: TObject); 16     procedure FormClose(Sender: TObject; var Action: TCloseAction); 17     procedure ListBox1Click(Sender: TObject); 18   private
19     { Private declarations }
20     //处理WM_DRAWCLIPBOARD消息过程
21     procedure WMDrawClipBoard(var AMessage:TMessage);message WM_DRAWCLIPBOARD; 22   public
23     { Public declarations }
24   end; 25 
26 var
27  Form1: TForm1; 28 
29 implementation
30 {$R *.dfm}
31 
32 var
33   //观察链中下一个窗口句柄
34  NextClipHwnd:HWND; 35 { TForm1 }
36 
37 procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 38 begin
39   //从观察链中删除本观察窗口
40  ChangeClipboardChain(Handle, NextClipHwnd); 41   //将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
42  SendMessage(NextClipHwnd, WM_CHANGECBCHAIN, Handle, NextClipHwnd); 43 end; 44 
45 procedure TForm1.FormCreate(Sender: TObject); 46 begin
47   //获得观察链中下一个窗口句柄
48   NextClipHwnd := SetClipBoardViewer(Handle); 49 end; 50 
51 procedure TForm1.ListBox1Click(Sender: TObject); 52 begin
53   if ListBox1.Items.Count >= 0 then          
54     if ListBox1.Items.Strings[ListBox1.ItemIndex]  ='Bitmap'  then
55       begin
56  Clipboard.Open; 57  Clipboard.Clear; 58  Clipboard.SetAsHandle(CF_BITMAP, Image1.Picture.Bitmap.Handle); 59  Clipboard.Close; 60       end
61     else
62     begin
63  Clipboard.Open; 64  ClipBoard.Clear; 65       Clipboard.AsText := ListBox1.Items.Strings[ListBox1.ItemIndex]; 66  ClipBoard.Close; 67     end; 68 end; 69 
70 procedure TForm1.WMDrawClipBoard(var AMessage: TMessage); 71 begin
72   //将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
73   if NextClipHwnd <> 0 then
74  SendMessage(NextClipHwnd, AMessage.Msg, AMessage.WParam, AMessage.LParam); 75   //处理剪贴板中内容
76   if Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT) then
77   begin
78     //查询剪贴板中特定格式的数据内容
79     ListBox1.Items.Add(Clipboard.asText + '...'); 80   end; 81   if Clipboard.HasFormat(CF_BITMAP) then
82   begin
83     ListBox1.Items.Add('Bitmap'); 84     Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BITMAP, clipboard.GetAsHandle(CF_BITMAP), 0); 85   end; 86 end; 87 
88 end.

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM