监视剪贴板数据
Posted blogpro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监视剪贴板数据相关的知识,希望对你有一定的参考价值。

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, clipbrd, StdCtrls, ComCtrls, Menus, ExtCtrls, ToolWin; type TForm1 = class(TForm) MainMenu1: TMainMenu; ToolBar1: TToolBar; StatusBar1: TStatusBar; Panel1: TPanel; Splitter1: TSplitter; Panel2: TPanel; N1: TMenuItem; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; TabSheet4: TTabSheet; TabSheet5: TTabSheet; TabSheet6: TTabSheet; TabSheet7: TTabSheet; TabSheet8: TTabSheet; Memo1: TMemo; Button1: TButton; Button2: TButton; ListView1: TListView; Button3: TButton; Image1: TImage; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private Private declarations public Public declarations next: HWND; // 定义一个消息过程用于处理wm_drawclipboard消息 // procedure WMdrawclipboard(var aa: TMessage);message wm_drawclipboard; MyBitmap: TBitmap; 保存截获的位图 View: Boolean; 判断是否显示 NextViewerHandle: HWND; 下一剪贴板观察器的句柄 procedure WMDrawClipboard(var Msg: TWMDrawClipboard); message WM_DRAWCLIPBOARD; procedure WMChangeCBChain(var Msg: TWMChangeCBChain); message WM_CHANGECBCHAIN; end; var Form1: TForm1; 响应Windows的剪贴板消息 implementation uses PCHardWareInfo; $R *.dfm procedure TForm1.WMChangeCBChain(var Msg: TWMChangeCBChain); begin if Msg.Remove = NextViewerHandle then NextViewerHandle := Msg.Next else if NextViewerHandle <> 0 then SendMessage(NextViewerHandle,Msg.Msg,Msg.Remove,Msg.Next); Msg.Result := 0; end; procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard); var FileName: String; begin If NextViewerHandle <> 0 then SendMessage(NextViewerHandle, Msg.Msg, 0, 0); If ClipBoard.HasFormat(CF_BITMAP) then begin MyBitmap.Assign(ClipBoard); If SaveDialog1.Execute then begin FileName := SaveDialog1.FileName; MyBitmap.SaveToFile(FileName); end; If View then begin WindowState := wsNormal; Image1.Picture.Bitmap := MyBitmap; end; end; Msg.Result := 0; end; procedure TForm1.Button1Click(Sender: TObject); begin next := SetClipboarDviewer(handle); end; procedure TForm1.Button2Click(Sender: TObject); begin ChangeClipboardChain(handle, next); SendMessage(next, WM_CHANGECBCHAIN, handle, next); MyBitmap.Free; end; procedure TForm1.Button3Click(Sender: TObject); begin // PCHardWareInfo.TPCUserInfo.GetHostIP; View := False; // SpeedButton2.Down := True; MyBitmap := TBitmap.create; try MyBitmap.Width := 0; MyBitmap.Height := 0; except Application.terminate; end; ClipBoard.Clear; NextViewerHandle := SetClipboarDviewer(handle); end; // procedure TForm1.wmdrawclipboard(var aa: tmessage); // begin // SendMessage(next,aa.Msg ,aa.WParam ,aa.LParam ); // if(clipboard.hasformat(CF_TEXT)or clipboard.HasFormat(CF_OEMTEXT) )then // begin // memo1.Clear; // memo1.Lines.Add(clipboard.AsText); // end; // end; end.
请问gifimage控件有适合delph
问题已经解决,原来d2010对gifimage的写法不一样,写成了 gifimg,在以前的版本里用的是gifimage,然后自然找不到gifimage,再从网上下载gifimage,又因为版本的问题,导致了上面的错误,其实只要在以前用到gifimage的地方,将引用变成gifimg,就可以用d2010自带的gifimage控件了。 不知道 我这种说法是不是对的,如果 有不对,请指正。
以上是关于监视剪贴板数据的主要内容,如果未能解决你的问题,请参考以下文章
csharp 使用AddClipboardFormatListener / WM_CLIPBOARDUPDATE监视C#中的剪贴板更改。请参阅剪贴板类:http://msdn.microsoft.co