大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 监视剪贴板内容

监视剪贴板内容

时间: 2021-07-31 作者:daque

---- 越野的岁月,用过搜集蚂蚁的人确定不少,个中一项监督剪贴板变革的功效让人发觉到不少关心。正文将引见在delphi中怎样运用“关心板”,来充分本人的软硬件功效。  ---- windows运用剪贴板查看器和查看链。剪贴板查看器是一个表露剪贴板暂时实质的窗口。常常它该当起码能表露三种普遍方法的实质:笔墨cf_text、位图cf_bitmap、元文献cf_metafilepict。剪贴板查看链是一系列彼此独力的剪贴板查看窗口,它们都不妨接收暂时发送给剪贴板的实质。咱们大概依照以次办法在窗口中处置相关剪贴板的实质。  ---- 开始,运用setclipboardviewer(hwnd)因变量向剪贴板查看链中介入一个查看窗口。当剪贴板的实质爆发变革时,该窗口会接受到一个wm_drawclipboard动静。该因变量须要传播的参数是查看窗口的句柄。归来值也是一个窗口句柄典型,标识了将要介入的下一个窗口。  ---- 而后,相应wm_drawclipboard动静处置剪贴板实质的变革。  ---- 结果,在步调退出或封闭时须要挪用changeclipboardchain因变量来将本人从查看链中简略。而后挪用sendmessage因变量把那些动静传播到查看链中的下一个查看窗口。因变量changeclipboardchain原形如次:  bool changeclipboardchain( hwnd hwndremove, //将要简略的窗口的句柄 hwnd hwndnewnext  //查看链中下一个窗口的句柄    ); ---- delphi的clipbrd.pas单位中设置了一个类tclipboard,它封装了windows剪贴板,简化了洪量搀杂的处置进程。咱们在步调中不妨径直挪用全部因变量clipboard,该因变量用来归来tclipboard东西范例,运用这个范例对剪贴板举行剪切、复制和粘贴等操纵。底下是tclipboard东西的几个常用的本领和属性的大略引见。  ---- 本领:  ---- assign:将指定的东西放入剪贴板中。  ---- open:翻开剪贴板,提防其余步调改写剪贴板。在向剪贴板介入多项数据时更加有效。  ---- close:封闭剪贴板。该当与翻开剪贴板成对运用。  ---- clear:清空剪贴板。  ---- getashandle:归来剪贴板中指定方法数据的句柄。运用前必需翻开剪贴板。  ---- getcomponent:归来剪贴板中的一个控件。delphi本人运用得多。  ---- hasformat:查问剪贴板中能否有指定方法的实质。  ---- 属性:  ---- astext:用来读写剪贴板笔墨实质。  ---- formatcount:读剪贴板中数据方法的种数。  ---- formats:归来剪贴板中百般方法的列表。  ---- 其余,delphi中的很多控件中也封装了相关剪贴板处置的操纵。底下的一个处置剪贴板的大略例子,不过将剪贴板的笔墨实质表露为窗口题目。  unit unit1; interface uses   windows, messages, sysutils, classes, graphics, controls, forms, dialogs,   clipbrd;//介入clipbrd单位 type   tform1 = class(tform)     procedure formcreate(sender: tobject); procedure formclose(sender: tobject; var action: tcloseaction);   private     { private declarations }   public     nextcliphwnd:hwnd;//查看链中下一个窗口句柄 procedure wmdrawclipboard (var amessage:tmessage); message wm_drawclipboard; //处置wm_drawclipboard动静进程   end; var   form1: tform1; implementation {$r *.dfm} { tform1 } procedure tform1.wmdrawclip board(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     //处置剪贴板中实质     caption:=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; end. ---- 须要提防的是,在处置剪贴板实质变革的动静wm_drawclipboard的进程和封闭窗口事变中运用因变量sendmessage把wm_drawclipboard或wm_changecbchain动静传播到查看链中的下一个窗口是需要的,要不有大概其余窗口不许赢得一致动静。其余,在运用搜集蚂蚁时笔者已经碰到不许树立剪贴板方法的情景,在此指示读者群提防查看registerclipboardformat等因变量的归来值。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.