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]模 ...
随机推荐
- eclipse 远程debug tomcat web项目
1.首先须要在linux系统tomcat/bin文件夹下配置catalina.sh这个文件里添加: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=d ...
- adobe Changing PDF Link Color for Regulatory Submissions
Changing PDF Link Color for Regulatory Submissions http://blogs.adobe.com/acrobatforlifesciences/200 ...
- mysql的四种启动方式
查看该版本的相应参数: mysqld --verbose --help 1.mysqld ./mysqld --defaults-file=/etc/my.cnf --user=mysql ...
- 【a703】求逆序对(树状数组的解法)
Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定一个序列a1,a2...an.如果存在i小于j 并且ai大于aj,那么我们称之为逆序对,求给定序列中逆序 ...
- 【codeforces 758C】Unfair Poll
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- [Javascript] Write a function pipeline
const _pipe = (f, g) => (...args) => g(f(...args)) export const pipe = (...fns) => fns.redu ...
- 百度消息推送SDK探究(并附上最简推送Demo)
上一篇<百度消息推送REST API探究>中了解了如何使用REST API推送消息,这一篇我们来看一下百度消息推送为我们提供的SDK. 帮助文档:http://developer.baid ...
- JAVA中String类的intern()方法的作用
一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: public static void main(String[] args) t ...
- WPF入门(三)->几何图形之矩形(RectangleGeometry)
原文:WPF入门(三)->几何图形之矩形(RectangleGeometry) 我们可以使用RectangleGeometry来绘制一个矩形或者正方形 RectangleGeometry 类:描 ...
- solrj 7.x Expected mime type application/octet-stream but got text/html.
出现这种情况是因为baseurl填写错误,最开始的时候我写的是用tomcat启动后浏览器中访问solr的地址 结果就出现了如题的异常,当然提示的是404,还有可能提示405,Method not al ...