该程序能够监视Windows剪切板的内容(文字和图片)

其思路是

先调用SetClipBoardViewer(Self.Handle),让Windows剪切板内容发生改变之后,通知本程序;

然后截获WM_DRAWCLIPBOARD消息来查看剪切板里面的内容;

最后关闭程序时调用changeclipboardChain(handle,hwndNextViewer)注销监视剪切板

再处理WM_CHANGECBCHAIN消息来真正撤销

主要代码如下:

procedure TForm1.FormCreate(Sender: TObject);
begin
hwndNextViewer:= SetClipBoardViewer(Self.Handle);
end; procedure TForm1.DrawclipBoard(var message: Tmessage);
begin
lbl1.Caption := '' ;
if (hwndNextViewer<>) then
SendMessage(hwndNextViewer,message.Msg,message.WParam,message.LParam);
PaintClip;
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
changeclipboardChain(handle,hwndNextViewer);
end; procedure TForm1.ChangecbChain(var message: Tmessage);
begin
if (message.WParam=hwndNextViewer) then
hwndNextViewer := message.LParam
else if(hwndNextViewer<>) then
SendMessage(hwndNextViewer,message.Msg,message.WParam,message.LParam);
end; procedure TForm1.PaintClip;
Var
htext,hBitmap:HGLOBAL;
str:String;
pch:Pointer;
len:Integer;
begin
openclipboard(Self.Handle);
htext := GetClipboardData(CF_TEXT);
hBitmap := GetClipboardData(CF_BITMAP);
if htext<> then
begin
pch:=globallock(htext);
len:= globalSize(htext);
SetString(str,Pchar(pch),len);
lbl1.Caption := lbl1.Caption + str;
globalunlock(htext);
end;
if hBitmap<> then
begin
img1.Picture.Bitmap.Handle := hBitmap;
end;
CloseClipBoard;
end;

点击这里下载程序源码

【笨嘴拙舌WINDOWS】实践检验之剪切板查看器【Delphi】的更多相关文章

  1. clipbrd剪切板查看器

    本文,我们来学习一下简单的概念,即,如何查看系统剪贴版里面有什么内容?   如果要想看.或者验证系统剪贴版里面都有什么内容,最为简单的方法就是通过"粘贴"的操作来验证!   但是, ...

  2. 【Windows API】OpenClipboard --- 剪切板(转)

    原文转自 http://www.cnblogs.com/wind-net/archive/2012/11/01/2749558.html 剪切板:系统维护的一个全局公共内存区域.每次只允许一个进程对其 ...

  3. 转: Windows如何打开和使用事件查看器管理计算机

    方法/步骤   1 右键单击"我的电脑"(win8中名称为"这台电脑.This Computer"),选择"管理",点击. 步骤阅读 2 出 ...

  4. WINDOWS SERVER 2016 设置使用照片查看器查看图片

    1.使用win+R快捷键快速打开运行,输入regedit打开注册表 2.在注册表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewe ...

  5. delphi备份恢复剪切板

    http://blog.csdn.net/youthon/article/details/7327776 delphi备份恢复剪切板         分类:            Delphi编程20 ...

  6. Windows 10 - 查看系统剪切板历史

    在之前的Windows版本(1809之前),Windows的剪切板历史一直都是对用户不可见的. 也就是它只保留最后一次的剪切记录,但是这个记录是什么,不知道!只能粘贴出来才知道. 但是现在变了,Win ...

  7. 【笨嘴拙舌WINDOWS】实践检验之GDI缩放

    SetMapmode(dc,MM_Text); //先继承MM_TEXT的属性 SetMapMode(dc,MM_ANISOTROPIC); SetWindowExtEx(dc,rect.Right, ...

  8. 监视 Windows 剪切板

    一.先看代码 import win32con,win32gui import win32clipboard as cb class MyWindow(): def __init__(self): #注 ...

  9. 重新想象 Windows 8 Store Apps (40) - 剪切板: 复制/粘贴文本, html, 图片, 文件

    [源码下载] 重新想象 Windows 8 Store Apps (40) - 剪切板: 复制/粘贴文本, html, 图片, 文件 作者:webabcd 介绍重新想象 Windows 8 Store ...

随机推荐

  1. ”sql Server2008 应用程序无法启动,因为应用程序的并行配置不正确。 找不到从属程序集。“C:\windows\SysWOW64\DTSPipelinePerf100.dll”的激活上下文生成失败“的解决方案

    一:控制面板->管理工具->事件查看器->windows日志->应用程序   查看错误原因: 二:在其他机子上拷贝一个DTSWizard.exe.config文件替换本机上已经 ...

  2. Sqli-labs less 56

    Less-56 与less54.55形式是一致的,我们关注sql语句, $sql="SELECT * FROM security.users WHERE id=('$id') LIMIT 0 ...

  3. 压测2.0:云压测 + APM = 端到端压测解决方案

    从压力测试说起 压力测试是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患.与功能测试不同,压测是以软件响应速度为测试目标的,尤其是针对在较短时间内大量并发用户的访 ...

  4. 【基本算法】 KMP文本串模式串的字符串匹配算法

    看了两个晚上的KMP,加上基本的“暴力匹配” 今晚看懂next[j]递归求解时,突然觉得算法真的好美妙,虽然觉悟的晚但晚胜过没有是吧! 我的博客都是应试性的学习笔记,不具备指导性,还是大神们写的好,例 ...

  5. POJ 2014

    #include <iostream> using namespace std; int main() { //freopen("acm.acm","r&qu ...

  6. mysql limit

    select * from tablename limit 1,4即取出第2条至第5条,4条记录

  7. WCF分布式开发步步为赢(11):WCF流处理(Streaming)机制

    WSE3.0框架提供了数据优化传输机制,WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传.下载 疑问里进行了介绍.WCF同样也提供了流操作来支持大数据对象的传输和处理优化机制,今天 ...

  8. (转)OpenCV 2.4.8 +VS2010的开发环境配置

    转自:  http://blog.csdn.net/poem_qianmo/article/details/19809337 自己可能需要再进行修改 本系列文章由zhmxy555(毛星云)编写,转载请 ...

  9. Linux网络编程8——对TCP与UDP的简易封装

    引言 每次使用socket通信,都会有很对相似的操作.本文,会对TCP与UDP通信做一简单封装,并生成动态库. 代码 my_socket.h #ifndef __MY_SOCKET_H__ #defi ...

  10. QTP菜单消失的解决办法

    解决办法一:点击QTP上方菜单栏“Tools” menu->options 项,点击"General" tab, 最后点击“Restore Layout”按钮. 解决办法二: ...