【笨嘴拙舌WINDOWS】实践检验之剪切板查看器【Delphi】
该程序能够监视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】的更多相关文章
- clipbrd剪切板查看器
本文,我们来学习一下简单的概念,即,如何查看系统剪贴版里面有什么内容? 如果要想看.或者验证系统剪贴版里面都有什么内容,最为简单的方法就是通过"粘贴"的操作来验证! 但是, ...
- 【Windows API】OpenClipboard --- 剪切板(转)
原文转自 http://www.cnblogs.com/wind-net/archive/2012/11/01/2749558.html 剪切板:系统维护的一个全局公共内存区域.每次只允许一个进程对其 ...
- 转: Windows如何打开和使用事件查看器管理计算机
方法/步骤 1 右键单击"我的电脑"(win8中名称为"这台电脑.This Computer"),选择"管理",点击. 步骤阅读 2 出 ...
- WINDOWS SERVER 2016 设置使用照片查看器查看图片
1.使用win+R快捷键快速打开运行,输入regedit打开注册表 2.在注册表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewe ...
- delphi备份恢复剪切板
http://blog.csdn.net/youthon/article/details/7327776 delphi备份恢复剪切板 分类: Delphi编程20 ...
- Windows 10 - 查看系统剪切板历史
在之前的Windows版本(1809之前),Windows的剪切板历史一直都是对用户不可见的. 也就是它只保留最后一次的剪切记录,但是这个记录是什么,不知道!只能粘贴出来才知道. 但是现在变了,Win ...
- 【笨嘴拙舌WINDOWS】实践检验之GDI缩放
SetMapmode(dc,MM_Text); //先继承MM_TEXT的属性 SetMapMode(dc,MM_ANISOTROPIC); SetWindowExtEx(dc,rect.Right, ...
- 监视 Windows 剪切板
一.先看代码 import win32con,win32gui import win32clipboard as cb class MyWindow(): def __init__(self): #注 ...
- 重新想象 Windows 8 Store Apps (40) - 剪切板: 复制/粘贴文本, html, 图片, 文件
[源码下载] 重新想象 Windows 8 Store Apps (40) - 剪切板: 复制/粘贴文本, html, 图片, 文件 作者:webabcd 介绍重新想象 Windows 8 Store ...
随机推荐
- 1024: [SCOI2009]生日快乐
暴力题,N<=10,没注意到平均分,读题真是.. 我们对于一个矩形分成两块进行搜.然后求较大值. ans=min(ans,max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n ...
- How Big Is A Petabyte, Exabyte, Zettabyte, Or A Yottabyte?
一个关于Byte递增的描述,蛮有趣的! Bytes -> Kilobyte -> Megabyte -> Gigabyte -> Terabyte -> Petabyte ...
- mysql去除重复查询的SQL语句基本思路
SELECT R.* FROM trans_flow R, (SELECT order_no, MAX(status_time) AS status_time FROM trans_flow GROU ...
- HTML5 canvas 绘图步骤
1.先把canvas选出来,不选出来你往哪儿画! var oCan= document.getElementById('xxx'); 2.声明基于 canvas 的context对象,没他你怎么调用 ...
- LA 4727
Integers 1, 2, 3,..., n are placed on a circle in the increasing order as in the following figure. W ...
- POJ 1151 Atlantis(经典的线段树扫描线,求矩阵面积并)
求矩阵的面积并 采用的是区间更新 #include <iostream> #include <stdio.h> #include <string.h> #inclu ...
- jquey ajax 无刷新提交form
http://bbs.csdn.net/topics/380237868 $.ajax({ type: "POST", url:ajaxCallUrl, data:$('#your ...
- 从Config文件中读取节点的配置信息
下面是web.config中与本内容有关的细节 <appSettings> <add key="servername" value="www" ...
- js的正则表达式
正则表达式(regular expression)是一中描述字符模式的对象,js的RegExp类表示正则表达式,String与RegExp都定义了相应的方法来操作正则表达式,比如模式匹配,文本检索和替 ...
- java获取系统当前时间
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式 System.out.print(df. ...