实现网络蚂蚁的实时监视剪贴板功能

netcut 是什么?简单安全的在线剪贴板搭建与使用教程 在线剪贴板虽然是一个很小的工具,但在日常工作中却非常高频。netcut 这种轻量级方案,可以让文本共享变得更简单、更高效。通过在云服务器上部署 netcut,可以拥有一个属于自己的跨设备剪贴板系统,随时随地使用。在实际体验中,选择一台稳定、长期在线的云服务器(例如莱卡云),可以让这个工具长期稳定运行,成为日常工作中的一个效率助手。 阅读详情

实现网络蚂蚁的实时监视剪贴板功能
                                                      作者:黑龙江省五大连池   马明臣  
 我们知道,网络蚂蚁能够实时地监视剪贴板,如果我们能够在自己的程序中实现这个功能,肯定为我们的程序增色不少。
 那它到底是如何实现的呢?我们可以想到的最简单的方法是,直接开个计时器,定时检查剪贴板上的内容,或者另写个线程来检查。这两个方法都能够监视剪贴板,但遗憾的是实时性太差,又占用了系统的大量资源,很不合算。好一点的方法可以用Win32API中关于剪贴板钩子(HOOK)的函数,只要安装了剪贴板的钩子函数,就可以做到实时地监视剪贴板,因为任何剪贴板的改变都会触发一条消息,而钩子函数拦截了这条信息。然而,这要求当前程序必须要有机会获得CPU控制权才能处理这个消息。如果该程序这时并没有释放CPU,监视剪贴板的程序并不能处理消息。只有当该程序执行完了之后,别的程序才能获得处理机会,但此时,剪贴板只剩下最后一次粘贴的内容了。而且,使用钩子函数非常危险,一旦你的程序出了问题,整个系统也就跟着瘫痪了。
既然这些方法都不太理想,那我们不妨转换一下思维,不再去管剪贴板,而想想如何让剪贴板直接向自己的程序发消息,这样肯定能做到百分之百的实时。为此我仔细的查看了各种Windows的编程资料,结果是:因为剪贴板不具有自己的句柄(Handle),它本身也不是Windows的一个类,故剪贴板是不会自己发消息的。但是系统是如何能够接收剪切/拷贝到剪贴板等命令呢?也即是如何接收WM_COPY和WM_CUT,WM_PASTE等消息呢?经过研究发现能够发送消息的是剪贴板查看器,原来多个剪贴板查看器依次连接成剪贴板查看链。因此,要实现实时监视剪贴板必须将自己的程序注册成为剪贴板查看器(即加入链表中)。下面笔者以C++ Builder 5.0为例编程说明其具体实现过程。
首先新建一个工程,在Form1上增加一个Memo控件,然后在Form1的.h里面加上#include <vcl/Clipbrd.hpp>,因为下面要用到的API函数大多是在该头文件中定义的。
在Form1的.h的public加上:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DRAWCLIPBOARD,TMessage,ClipboardChanged) //映射这个消息
END_MESSAGE_MAP(TForm)
HWND LastHandle;// 用于保存剪贴板查看器链中下一个窗口的句柄。
 接下来,当然是把自己的程序窗口注册成为剪贴板查看器了。在Form1的OnCreate事件中加入一句:
 LastHandle=SetClipboardViewer(Form1->Handle);
 该函数会将指定的窗口加入剪贴板查看器链,参数handle就是你欲新加入的窗口的句柄,返回值则为系统的剪贴板查看器链中下一个窗口的句柄。
 当你自己的程序退出时,必须从剪贴板查看器链中删除本窗口。在Form1的OnClose事件中加入两句:
ChangeClipboardChain(Form1->Handle,LastHandle);
 函数ChangeClipboardChain是SetClipboardViewer的逆操作,能将第一个参数handle指定的窗口从剪贴板查看器链中删除,第二个参数是剪贴板查看器链中下一个窗口的句柄,是供系统调整剪贴板查看器链表用的,我们不用管它。
 最后一步,也是最关键的一步,如果剪贴板内容有变化,窗口将自动激活 WM_DRAWCLIPBOARD消息,也即间接地实现了让剪贴板向自己的程序发消息的功能,这就能够实时监视剪贴板,相信网络蚂蚁也应该是用这个方法。有一点要注意的是,在接收处理WM_DRAWCLIPBOARD消息时要将消息传递给剪贴板查看链中的下一个窗口,以便让其它程序也能监视剪贴板,因为该消息只直接发给链中的第一个程序,其他程序不会直接收到该消息。
 程序如下,在Form1的.h的private加上:
void __fastcall ClipboardChanged(TMessage& Msg);
 再编写自己的处理过程,这就是你自由发挥的地方了。本例设为自动将剪贴板的文本粘贴到Memo控件中。
 在Form1的.cpp内加上:
void __fastcall TForm1::ClipboardChanged(TMessage& Msg)
{
 if (Clipboard()->HasFormat(CF_TEXT))
    Memo1->Text = Clipboard()->AsText;
 }    
 这一过程中使用了 TClipboard 类的 Clipboard 函数获取剪贴板内文本内容,至于如何获取剪贴板内的其它非文本类型的内容则不在本文讨论范围内了,读者可自己在C++ Builder中输入TClipboard ,再按F1,键,就可以看到各个函数的详细用法了,不过这些帮助可都是英文的呀!
以上程序在C++ Builder 5.0+PWIN98系统下调试通过,由于笔者水平有限,上文如有不妥之处,请大家与我一起探讨。

 

剪贴板查看神器,看看谁用了你的剪贴板 剪贴板查看神器,看看谁用了你的剪贴板 实时查看,谁像你的剪贴板复制了内容,也可以调试代码使用 立即下载

相关推荐

剪切板监控及内容修改

对特定的应用程序进行剪切板监控,并将监控到的内容进行修改后再发送到剪切板。

【语言-C++】 Clipboard(剪贴板)2-监听剪贴板并直接显示剪贴板内容到窗口

简介 SetClipboardViewer :将指定窗口加入到剪贴板监听链,返回下一个监听的窗口句柄 WM_CHANGECBCHAIN:当监听链发生改变的时候,剪贴板的消息只会把消息发送给剪贴板监听链的第一个窗口,前面的窗口负责给后面的窗口发送剪贴板的消息,如果有一个窗口没有给后面的窗口发送剪贴板消息,那么后面的窗口接收不到剪切板的消息。 WM_DRAWCLIPBOARD:当剪切板的内容发生

少莫千华 4675

ClipSync:网络剪贴板同步

剪辑同步 网络剪贴板同步

20款电脑剪贴板软件良心推荐&汇总

剪贴板(ClipBoard)是内存中的一块区域,是Windows内置的一个非常有用的工具,通过小小的剪贴板,架起了一座彩桥,使得在各种应用程序之间,传递和共享信息成为可能。然而美中不足的是,剪贴板只能保留一份数据,每当新的数据传入,旧的便会被覆盖。

simon4055的专栏 3万+

监视剪切板

有很多程序会监视剪贴板,比如迅雷,这样当你复制一个迅雷下载链接时,迅雷就可以自动启动并创建一个新的下载任务。下面我们就来看看如何实现这个技术。

SWT实现的剪贴板查看器

SWT实现的剪贴板查看器<br><br>剪贴板查看器 v1.0<br>作者:talent_marquis | 甜菜侯爵<br>Email:talent_marquis@163.com<br><br>实现功能<br>~实时监控剪贴板内容(仅限文本内容),并动态捕捉<br>~可自行设置存储条数、监控时间间隔、显示字数<br>~利用JSmooth转成exe文件,配合jre和swt-win32-3232.dll即可直接运行

【经验分享】网络剪贴板-PasteMe

痛点 有时候我们需要将一段文字、一个网址、或账号密码从电脑发送到手机,常规做法是: 电脑复制文字 通过QQ/微信/钉钉/TG….等通讯工具发送 手机打开这些App 找到并打开对话框 复制文字,再去需要的地方粘贴 这种方法费时费力,不适合我这种懒人~ 更高效的方案 PasteMe — 一个无需注册的文本分享平台(已挂,建议用下面推荐的两个剪贴板来代替) 使用方法很简单,在索引框里随便输入一个id(可以是任意字符),简单来说就是这个id是用来对应你要粘贴的内容的; ....

qq_60886415的博客 1433

EDA公司(一):Synopsys-- 主要 EDA 工具及其简介

Synopsys 是一家领先的电子设计自动化(EDA)软件公司,提供了一系列全面的产品和服务,旨在支持从概念设计到大规模生产的各个阶段。Synopsys 的 EDA 工具覆盖了芯片设计的各个方面,包括但不限于逻辑综合、静态时序分析、功能验证、物理实现、形式验证、测试插入、电源分析、信号完整性分析等。

MHD0815的博客 3311

vb.net剪切板监控(配合消息钩子)

剪切板监控技术可以实现类似迅雷复制链接提示下载的功能,鉴于vb.net少人写例子,这里我就写一个简单的例子。

weixin_42150685的博客 943

记一次完整的RPG Maker MV游戏逆向过程(思路一)

了解RPG Maker MV的文件建构 上一篇文章,我们已经成功在PC上运行了游戏,那我们如何对游戏进行逆向呢? 首先要了解正常的RPG Maker MV制作的游戏应该具有哪些文件,以及他的结构 那如何了解他的结构呢,很简单,我们只需要用RPG Maker MV创建一个默认工程,来看看一个游戏的最简结构是怎么样的 创建新项目 项目创建完成 查看项目目录结构 是不是和之前解包出来的很像呢? 通...

Ciiiiiing的博客 1万+

宇树机器人G1二次开发:导览、起始点、目的地与完整示例

通过宇树G1 SDK的导航接口,开发者可以高效地实现机器人的自主移动功能。连接 -> 设置目标点 -> 发送命令 -> 监控状态。本文提供的完整示例涵盖了从环境搭建到代码实现的全部步骤,并解释了起始点、目的地等关键概念。开发者可以在此基础上,结合多目标点巡逻、动态避障(需高级配置)等功能,构建更复杂的机器人应用。建议读者先在小范围、熟悉的平坦环境中测试,成功后再逐步扩展到更复杂的场景。

m0_52645558的博客 747

[服务器2]php搭建网络剪贴板

​。

2301_76197567的博客 1706

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

实现网络蚂蚁的实时监视剪贴板功能 (转)

实现网络蚂蚁的实时监视剪贴板功能 (转)[@more@]实现网络蚂蚁的实时监视剪贴板功能 作者:黑龙江省五大连池 马明臣 我们知道,网络蚂蚁能够实时地监视剪贴板,如果我们能够在自己的程序中实现这个功能,肯定为我们的程序增...

cuiji1279的博客 149

使用mid360运行lio-livox对比fast-lio2

msg_type为激光雷达发出的数据格式,有livox自定义数据类型格式CustomMsg和ros标准的PointCloud2格式,因此首先需要确定激光雷达端配置的是哪种格式。可以从激光雷达的ros驱动中看到驱动端有三种格式可以选,驱动端的数字2对应lio-livox中的1,驱动端的0对应lio-livox的格式0。如果使用的是Ubuntu18.04编译完成后运行直接成功,如果使用20.04运行会报错,需要修改以下源代码。针对livox-mid360 运行lio-livox的一些问题。

z1872385的博客 1229

深入理解Android音视频同步机制(三)NuPlayer的avsync逻辑

本文深入介绍了NuPlayer的avsync逻辑和原理

张晖的专栏 1万+

监视剪贴板内容

2000年09月20日 15:29:00 冲浪的年代,用过网络蚂蚁的人肯定不少,其中一项监视剪贴板变化的功能让人感觉到不少体贴。本文将介绍在Delphi中如何使用“体贴板”,来丰富自己的软件功能。 Windows使用剪贴板观察器和观察链。剪贴板观察器是一个显示剪贴板当前内容的窗口。通常它应该至少能显示三种普通格式的内容:文字CF_TEXT、位图CF_BITMAP、元文件CF_METAFIL

秦梦瑶的专栏 372

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 121

delphi 剪切板变量_Delphi监视剪贴板内容

冲浪的年代,用过网络蚂蚁的人肯定不少,其中一项监视剪贴板变化的功能让人感觉到不少体贴。本文将介绍在Delphi中如何使用“体贴板”,来丰富自己的软件功能。Windows使用剪贴板观察器和观察链。剪贴板观察器是一个显示剪贴板当前内容的窗口。通常它应该至少能显示三种普通格式的内容:文字CF_TEXT、位图CF_BITMAP、元文件CF_METAFILEPICT。剪贴板观察链是一系列相互独立的剪贴板观察...

weixin_40002238的博客 378

AUTOSAR TcpIp模块 以太网配置开发2

someip协议之tcpIp协议

汽车电子电气 1085

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

FlashFXP 高级使用技巧

现在拥有个人主页的朋友非常多,对于每次更新所要用到的上传软件各位使用什么呢?CuteFTP 还是 WS_FTP?现在好多提供主页服务的网站,都指明了要用前两者上传,使得用户的选择很少,其实大家不一定非要按部就班,面对各种各样的FTP软件,用户的选择余地非常之多。FlashFXP 作为FTP软件中的后起之秀,以其使用方便,功能独特成为一颗亮丽的FTP新星。虽然如此,FlashF...

weixin_33850015的博客 587

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

1999年中国十大优秀共享软件

1999年中国十大优秀共享软件 《大众软件》编辑部、中国共享软件网站、金山卓越电脑咨询部、海阔天空软件下栽站、 飞翔鸟软体驿站、瀛海威软件过山车 Internet的发展带给了国产共享软件一个广阔甚至是无限的发展空间,在1999年,由中国共享软件网站和《大众软件》编辑部发起,金山卓越电脑资讯站、海阔天空、飞翔鸟软体驿站、软件过山车等单位联合举办了“共享之梦”——1999年十大优秀中国共享软

风之恋 3943

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VMware Workstation 入门使用

VMware Workstation 入门使用将鼠标焦点从虚拟机中退出共享剪切板共享文件(夹)虚拟机为 Linux虚拟机为 Windows 笔者的运行环境: VMware Workstation Pro 16 宿主机:Windows 10 教育版 虚拟机:不限 将鼠标焦点从虚拟机中退出   将鼠标焦点从虚拟机中退出至宿主机的方法时,在虚拟机中使用快捷键 Ctrl + Alt。如果安装了 VMware Tools,也可以无需借助快捷键。 共享剪切板   在 VMware Workstati

暗诺星刻的博客 5万+
上一篇: 利用c++builder设计文件分割机
下一篇: 利用BCB编写具有"磁性"特征的窗口
mamingchen
博客等级 码龄25年 6粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值