unit unitFrmMain;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Clipbrd; //加入clipbrd单元type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    //观察链中下一个窗口句柄
    NextClipHwnd: HWND;
    //处理WM_DRAWCLIPBOARD消息过程
    procedure WMDrawClipBoard(var AMessage: TMessage); message WM_DRAWCLIPBOARD;
  end;var
  Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.WMDrawClipBoard(var AMessage: TMessage);
begin
  //将WM_DRAWCLIPBOARD
  //消息传递到下一个观察链中的窗口
  SendMessage(NextClipHwnd, AMessage.Msg, AMessage.WParam, AMessage.LParam);
  //查询剪贴板中特定格式的数据内容
  if (Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT)) then
    begin
      //处理剪贴板中内容
      ListBox1.Items.Add(Clipboard.asText);
    end;end;procedure TForm1.FormCreate(Sender: TObject);
begin
  //获得观察链中下一个窗口句柄
  NextClipHwnd := SetClipBoardViewer(Handle);end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //从观察链中删除本观察窗口
  ChangeClipboardChain(Handle, NextClipHwnd);
  //将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
  SendMessage(NextClipHwnd, WM_CHANGECBCHAIN, Handle, NextClipHwnd);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Clear;
end;end.//这个可以监视剪贴板中的文本,如何同时监视JPG图片并显示呢?

解决方案 »

  1.   

    摘自万一博客,当你判定是图片时(好像是CF_BITMAP参数吧),就用下面的方法放到TBitmap中procedure TForm1.Button3Click(Sender: TObject);
    var
      bit: TBitmap; {准备用一个 TBitmap 从剪切板中结束图片}
      x,y: Integer;
    begin
      bit := TBitmap.Create;
      bit.Assign(Clipboard);               {从剪切板获取}
      x := Panel1.Width + Panel1.Left * 2; {x,y 是准备在窗体上的粘贴位置}
      y := Panel1.Top;
      Canvas.Draw(x, y, bit);              {粘贴就是画出来呗}
      bit.Free;  TButton(Sender).Caption := '粘贴';
    end;
      

  2.   

    要如何把这个图片在一个image中显示出来呢?
      

  3.   

    都已经读到bitmap中了,直接image去加载就是了
      

  4.   


     image1.Picture.LoadFromFile(bit);这样不行
      

  5.   


    Image1.Picture.Bitmap.Assign(bit);