delphi 剪切板变量_delphi实时监控剪贴板
句:
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 <> 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 <> NULL) then
with message do
SendMessage(hwndNextViewer, Msg,wParam, lParam);
end;
这一过程中使用了 TClipboard 类的 Clipboard 函数获取剪贴板内文本内容,至于如何获取剪贴板内的其它
多种类型的内容则不在本文讨论范围内了,读者可自己在DELPHI中输入 TClipboard ,再按CTRL+F1,各个
delphi 剪切板变量_delphi实时监控剪贴板相关推荐
- delphi 剪切板变量_delphi剪切板-监视剪贴板
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- java剪切txt文件_用Java把剪切板的内容实时保存到txt
test类:提示用户程序已启动,提示保存位置,清空剪切板. package com.ariya.service; import com.ariya.service.impl.ClipboardServ ...
- 关于Ansi版Delphi剪切板中文乱码的问题
Ansi版Delphi的剪贴板也是用Ansi字符串实现的,Clipboard.AsText是用CF_TEXT方式,设置和获取的都是AnsiString类型,处理中文时就是乱码,直接改Clipbrd单元 ...
- 用python做一个剪切板助手
用Python做剪切板助手 目录 用Python做剪切板助手 程序效果图: 一.构造多线程类 二.构造剪切助手类 剪切板检测变化函数 剪切板操作函数 程序运行函数 操作模式函数 三.实例类并让程序工作 ...
- 计算机关闭系统剪切板上的内容,怎么清空剪切板内容?
当您在使用电脑的"复制"以及"剪切"功能时,windows系统会把"复制"或"剪切"内容暂时存储在内存里,假如暂存的数据 ...
- java 监控剪切板_Java监视系统剪贴板
为工作方便写了个小工具,需要监视系统剪贴板,如果文本内容变化,则自动处理并存入剪贴板. FlavorListener仅在剪贴板中的数据类型变化时才生效. 改用ClipboardOwner接口,将它注册 ...
- tmux系统剪切板_实践中的tmux:与系统剪贴板集成
tmux系统剪切板 by Alexey Samoshkin 通过阿列克谢·萨莫什金(Alexey Samoshkin) 在实践中使用tmux:与系统剪贴板集成 (tmux in practice: i ...
- Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示
核心功能说明: 设置剪切板内容并指定所有者:clipboard.setContents(); 当所有者为程序本身时才能监听到剪切板的变动,每次系统执行复制或剪切动作时会自动的更改剪切板的所有者,所以每 ...
- Mac剪切板神器——Clipsy「记住999条剪贴板记录」
Clipsy Mac版是一款强大好用的剪切板管理器,如果你经常复制和粘贴东西,你就会知道剪贴板扩展的重要性.当您必须连续复制多个项目时,Clipy可帮助您记住999条剪贴板记录,并从剪贴板历史记录中搜 ...
- ios开发读取剪切板的内容_ios开发读取剪切板的内容_苹果隐私问题堪忧!多个iOS应用未经许可读取剪贴板......
[CNMO新闻]近日,据外媒Macrumors报道,根据最新研究显示,数十种流行的iOS应用程序,在未经用户同意的情况下读取剪贴板的内容,其中可能包含敏感信息.开发人员发现,似乎有相当多的iOS应用程 ...
最新文章
- 使用pytorch动手实现LSTM模块
- “约见”面试官系列之常见面试题之第七十五篇之vue中如何使当前css起作用(建议收藏)
- 有效数据包含外部数据_DuckDB FDW(外部数据包装器)来了
- php如何修改二维数组的值,php如何改变二维数组的值
- JavaScript—当前时间
- 列存储中常用的数据压缩算法
- 松下服务器显示18号报警,松下伺服报警代码预览表
- Excel导出当前工作表为PDF文件的操作
- C语言实现EPSG:4326和EPSG:3857的互转
- regester正则用法_Regester下载
- 查询结果按中文拼音顺序排序
- jxt - 强结构文档数据表示协议
- html5 制作书架展示 PHP,基于HTML5 Canvas的CSG构造实体几何书架
- 【文本】HTML5 Canvas小项目:为坐标轴添加数字标签(带刻度线)
- 使用U盘或移动硬盘制作系统盘
- 【CSS】常见选择器用法
- 老男孩python全栈s21day04作业
- 华为手机锁屏下拉怎么设置_华为手机怎么设置会滚动的锁屏文字?设置步骤超简单,一看就会...
- 想在美国找CS软件工作
- ThinkPHP5多语言切换项目实战