zoukankan      html  css  js  c++  java
  • 剪切板-监视剪贴板

    相关资料:

    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.
  • 相关阅读:
    前缀和
    B. Ilya and Queries
    BZOJ1652 [Usaco2006 Feb]Treats for the Cows
    NOIP2014提高组 酱油记
    NOIP初赛 BLESS ALL!
    BZOJ1096 [ZJOI2007]仓库建设
    BZOJ1036 [ZJOI2008]树的统计Count
    BZOJ1030 [JSOI2007]文本生成器
    BZOJ2749 [HAOI2012]外星人
    BZOJ1093 [ZJOI2007]最大半连通子图
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/5500482.html
Copyright © 2011-2022 走看看