delphi备份恢复剪切板(使用了GlobalLock API函数和CopyMemory)
看了季世平老兄的C++代码后翻译过来的
- unit clipbak;
- interface
- uses
- SysUtils, Classes, Clipbrd, Windows, Contnrs;
- type
- TClipData = class
- Format: WORD;
- Data: THANDLE;
- end;
- TClipBackuper = class
- private
- ClipList: TList;
- public
- constructor Create;
- destructor Destroy; override;
- procedure BackupClip();
- procedure RestoreClip();
- end;
- implementation
- constructor TClipBackuper.Create;
- begin
- Cliplist := TObjectList.Create;
- end;
- destructor TClipBackuper.Destroy;
- begin
- ClipList.Free;
- end;
- procedure TClipBackuper.BackupClip;
- var
- i: Integer;
- Data: THANDLE;
- pcd: TClipData;
- DataMem: Pointer;
- begin
- ClipList.Clear();
- Clipboard.Open();
- try
- for i := 0 to Clipboard().FormatCount - 1 do
- begin
- pcd := TClipData.Create;
- pcd.Format := Clipboard().Formats[i];
- Data := THANDLE(Clipboard().GetAsHandle( pcd.Format));
- if (Data = 0) then
- begin
- pcd.free;
- continue;
- end;
- pcd.Data := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, GlobalSize(Data));
- DataMem := GlobalLock(pcd.Data);
- if (DataMem <> nil) then
- begin
- CopyMemory(DataMem, GlobalLock(Data), GlobalSize(Data));
- GlobalUnlock(THANDLE(pcd.Data));
- GlobalUnlock(THANDLE(Data));
- end;
- ClipList.Add(pcd);
- end;
- finally
- Clipboard().Close();
- end;
- end;
- procedure TClipBackuper.RestoreClip;
- var
- pcd: TClipData;
- i: Integer;
- begin
- Clipboard.Open();
- try
- Clipboard.Clear();
- for i := 0 to ClipList.Count - 1 do
- begin
- pcd := TClipData(ClipList[i]);
- SetClipboardData(pcd.Format, pcd.Data);
- end;
- ClipList.Clear();
- finally
- Clipboard().Close();
- end;
- end;
- end.
http://blog.csdn.net/youthon/article/details/7327776
delphi备份恢复剪切板(使用了GlobalLock API函数和CopyMemory)的更多相关文章
- delphi备份恢复剪切板
http://blog.csdn.net/youthon/article/details/7327776 delphi备份恢复剪切板 分类: Delphi编程20 ...
- Delphi的windows剪切板操作函数
1. Clipbrd函数 function Clipboard: TClipboard;:若应用程序从未使用过剪贴板,则调用该函数形成新的剪贴板:若之前使用过剪贴板则返回使用过的剪贴板. 属性: As ...
- C# 使用WinApi操作剪切板Clipboard
前言: 最近正好写一个程序,需要操作剪切板 功能很简单,只需要从剪切板内读取字符串,然后清空剪切板,然后再把字符串导入剪切板 我想当然的使用我最拿手的C#来完成这项工作,原因无他,因为.Net框架封装 ...
- 【笨嘴拙舌WINDOWS】实践检验之剪切板查看器【Delphi】
该程序能够监视Windows剪切板的内容(文字和图片) 其思路是 先调用SetClipBoardViewer(Self.Handle),让Windows剪切板内容发生改变之后,通知本程序: 然后截获W ...
- windows剪切板暂存
其实最初是因为在项目中使用了html网页编辑器,通过ie的com组件和javascript通讯完成一些事情,其中有一个功能是插入表格,我们原本使用的range.pasteHTML(HTMLstr);根 ...
- MFC 剪切板的使用、线程介绍
一.MFC 剪切板 CListBox *pList = (CListBox*)GetDlgItem(IDC_LIST1); // 获取ListBox控件句柄 CString strTmp; pList ...
- 【转载】VC操作剪切板
1.在剪切板上放置数据 if(OpenClipboard()) //打开剪切板{ EmptyClipboard(); //清空剪切板 CString str; //从控件 ...
- VC拷贝字符串到剪切板
] ="中华人民共和国"; DWORD dwLength = ; // 要复制的字串长度 HANDLE hGlobalMemory = GlobalAlloc(GHND, dwLe ...
- C++和C#实现剪切板数据交互
c#端由于system.windows.form自带的剪切板功能太少,所以写了一个Helper类把接口转了出来.这样就可以用不同的uint的id了. 并且自带的剪切板必须执行在[STAThread]模 ...
随机推荐
- ORACLE会话数、连接数配置
ORACLE会话数.连接数配置 ORACLE会话数.连接数配置 ORACLE的会话数和连接数参数配置 以sysdba身份登录 sqlplus sys/xxxx as sysdba; 查看最大连接数: ...
- Ajax方法
json的解析: json是js原生的内容,也就意味着js可以直接取出json对象中的数据. 案例一: var persons = [ {"firstname":"张&q ...
- 基于 Android NDK 的学习之旅----- C调用Java
许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现. 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态 ...
- Quartz2D常见图形的绘制:线条、多边形、圆
UI高级 Quartz2D http://ios.itcast.cn iOS学院 掌握 drawRect:方法的使用 常见图形的绘制:线条.多边形.圆 绘图状态的设置:文字颜色.线宽等 图形上下文状 ...
- 【最大M子段和】dp + 滚动数组
题目描述 给定 n 个数求这 n 个数划分成互不相交的 m 段的最大 m 子段和. 给出一段整数序列 A1,A2,A3,A4,...,Ax,...,An ,其中 1≤x≤n≤1,000,000, -3 ...
- ServletContextListener接口用法
ServletContextListener接口用于tomcat启动时自动加载函数,方法如下: 一.需加载的类必须实现ServletContextListener接口. 二.该接口中有两个方法必须实现 ...
- 关于 Mesos,你知道多少?13 个问题带你深入了解 Mesos
听过不少人在讨论 Mesos,然而并不是很明白 Mesos 到底能够解决什么问题,使用场景是怎样的,周伟涛(国内较早一批接触使用 Docker,Mesos 等技术的开发者)用一句话形容它, Mesos ...
- Sublime Text3中JSX支持Emmet快捷键
在复习React的过程中,发现Sublime有些快捷键不能用了,如Emmet的Tab快速生成HTML代码只能用Ctrl+E快捷键,而不能用Tab键了,在网上找了很多文章,发现都有问题,最终自己通过下面 ...
- axios 提交 application/x-www-form-urlencoded
最近工作比较忙 , 喜欢上了用有道云做笔记 , 写博客就是为了记录自己的学习的点点滴滴 , 如果能对其他人有帮助当然最好了 , 我一定要将这个习惯进行下去 .. ..... 我们以前的前后交互方式一般 ...
- yii2.0预先处理方法
public function beforeAction($action){ return $action; }