句:

ChangeClipboardChain(handle, hwndNextViewer);

SendMessage(hwndNextViewer,WM_CHANGECBCHAIN,Handle,hwndNextViewer);

函数ChangeClipboardChain是SetClipboardViewer的逆操作,能将第一个参数handle指定的窗口从链中删

除,第二个参数是链中下一个窗口的句柄,是供系统调整链表用的,我们不用管它。SendMessage是向链中的下一

个窗口发送一个剪贴板查看链已经改变的消息(WM_CHANGECBCHAIN),让它进行内部程序的调整。第三和第四参数是

当前退链窗口和下一个窗口的句柄。

同样的,当链中的其它窗口退链时也会发送 WM_CHANGECBCHAIN 消息,你必须接收这个消息。在 private 部

分加入:

procedure ClipboardChangeCBChain(var message: TMessage);message WM_CHANGECBCHAIN;

再在implementation后加入处理过程,以调整剪贴板查看链。

procedure TForm1.ClipboardChangeCBChain(var message: TMessage);

begin

with message do

begin

if WParam=hwndNextViewer then

hwndNextViewer := LParam

else if (hwndNextViewer &lt&gt NULL) then

SendMessage(hwndNextViewer, Msg,wParam, lParam);

end;

end;

该过程实际上只是判断如果需要则修改变量hwndNextViewer的值,如果不需要修改则将WM_CHANGECBCHAIN 消

息发送给链中的下一个窗口处理,依此进行整个链表的调整。

最后一步,也是最关键的一步,如果剪贴板内容有变化,窗口将自动激活 WM_DRAWCLIPBOARD消息,也即间接

地实现了让剪贴板向自己的程序发消息的功能,这就能够实时监视剪贴板,相信蚂蚁和JETCAR等也应该是用这个方

法。有一点要注意的是,在接收处理WM_DRAWCLIPBOARD消息时要将消息传递给剪贴板查看链中的下一个窗口,以便

让其它程序也能监视剪贴板,因为该消息只直接发给链中的第一个程序,其他程序不会直接收到该消息。

程序如下,在 private 部分加入:

procedure ClipboardChanged(var message: TMessage);message WM_DRAWCLIPBOARD;

再编写自己的处理过程,这就是你自由发挥的地方了。本例设为自动将剪贴板的文本粘贴到MEMO控件中。

procedure TForm1.ClipboardChanged(var message: TMessage);

var

s :string;

begin

//判断剪贴板内容是否为文本

if Clipboard.HasFormat(CF_TEXT) then

begin

//取得剪贴板内文本内容

s := Clipboard.astext;

memo1.lines.add(s);

end;

//向下一链传递消息

if (hwndNextViewer &lt&gt NULL) then

with message do

SendMessage(hwndNextViewer, Msg,wParam, lParam);

end;

这一过程中使用了 TClipboard 类的 Clipboard 函数获取剪贴板内文本内容,至于如何获取剪贴板内的其它

多种类型的内容则不在本文讨论范围内了,读者可自己在DELPHI中输入 TClipboard ,再按CTRL+F1,各个

delphi 剪切板变量_delphi实时监控剪贴板相关推荐

  1. delphi 剪切板变量_delphi剪切板-监视剪贴板

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  2. java剪切txt文件_用Java把剪切板的内容实时保存到txt

    test类:提示用户程序已启动,提示保存位置,清空剪切板. package com.ariya.service; import com.ariya.service.impl.ClipboardServ ...

  3. 关于Ansi版Delphi剪切板中文乱码的问题

    Ansi版Delphi的剪贴板也是用Ansi字符串实现的,Clipboard.AsText是用CF_TEXT方式,设置和获取的都是AnsiString类型,处理中文时就是乱码,直接改Clipbrd单元 ...

  4. 用python做一个剪切板助手

    用Python做剪切板助手 目录 用Python做剪切板助手 程序效果图: 一.构造多线程类 二.构造剪切助手类 剪切板检测变化函数 剪切板操作函数 程序运行函数 操作模式函数 三.实例类并让程序工作 ...

  5. 计算机关闭系统剪切板上的内容,怎么清空剪切板内容?

    当您在使用电脑的"复制"以及"剪切"功能时,windows系统会把"复制"或"剪切"内容暂时存储在内存里,假如暂存的数据 ...

  6. java 监控剪切板_Java监视系统剪贴板

    为工作方便写了个小工具,需要监视系统剪贴板,如果文本内容变化,则自动处理并存入剪贴板. FlavorListener仅在剪贴板中的数据类型变化时才生效. 改用ClipboardOwner接口,将它注册 ...

  7. tmux系统剪切板_实践中的tmux:与系统剪贴板集成

    tmux系统剪切板 by Alexey Samoshkin 通过阿列克谢·萨莫什金(Alexey Samoshkin) 在实践中使用tmux:与系统剪贴板集成 (tmux in practice: i ...

  8. Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示

    核心功能说明: 设置剪切板内容并指定所有者:clipboard.setContents(); 当所有者为程序本身时才能监听到剪切板的变动,每次系统执行复制或剪切动作时会自动的更改剪切板的所有者,所以每 ...

  9. Mac剪切板神器——Clipsy「记住999条剪贴板记录」

    Clipsy Mac版是一款强大好用的剪切板管理器,如果你经常复制和粘贴东西,你就会知道剪贴板扩展的重要性.当您必须连续复制多个项目时,Clipy可帮助您记住999条剪贴板记录,并从剪贴板历史记录中搜 ...

  10. ios开发读取剪切板的内容_ios开发读取剪切板的内容_苹果隐私问题堪忧!多个iOS应用未经许可读取剪贴板......

    [CNMO新闻]近日,据外媒Macrumors报道,根据最新研究显示,数十种流行的iOS应用程序,在未经用户同意的情况下读取剪贴板的内容,其中可能包含敏感信息.开发人员发现,似乎有相当多的iOS应用程 ...

最新文章

  1. 使用pytorch动手实现LSTM模块
  2. “约见”面试官系列之常见面试题之第七十五篇之vue中如何使当前css起作用(建议收藏)
  3. 有效数据包含外部数据_DuckDB FDW(外部数据包装器)来了
  4. php如何修改二维数组的值,php如何改变二维数组的值
  5. JavaScript—当前时间
  6. 列存储中常用的数据压缩算法
  7. 松下服务器显示18号报警,松下伺服报警代码预览表
  8. Excel导出当前工作表为PDF文件的操作
  9. C语言实现EPSG:4326和EPSG:3857的互转
  10. regester正则用法_Regester下载
  11. 查询结果按中文拼音顺序排序
  12. jxt - 强结构文档数据表示协议
  13. html5 制作书架展示 PHP,基于HTML5 Canvas的CSG构造实体几何书架
  14. 【文本】HTML5 Canvas小项目:为坐标轴添加数字标签(带刻度线)
  15. 使用U盘或移动硬盘制作系统盘
  16. 【CSS】常见选择器用法
  17. 老男孩python全栈s21day04作业
  18. 华为手机锁屏下拉怎么设置_华为手机怎么设置会滚动的锁屏文字?设置步骤超简单,一看就会...
  19. 想在美国找CS软件工作
  20. ThinkPHP5多语言切换项目实战

热门文章

  1. 富士施乐Fuji Xerox DocuPrint P158 b 驱动
  2. 我的希捷ST31000340NS,BIOS不认,磁头反复归位,BUSY模式的固件门硬盘修复成功
  3. oracle学习札记95
  4. 数学公式编辑器的探索与实现
  5. java五子棋程序_Java五子棋游戏
  6. java五子棋开题_五子棋 开题报告
  7. Unity3dRPG 相机跟随player旋转_【Cinemachine】VirtualCamera虚拟相机详解(一)
  8. 修改BT种子的tracker服务器list
  9. 2022年日历表电子版打印版
  10. 如何在Visio中旋转图形