delphi备份恢复剪切板
2024-09-07 22:32:11
http://blog.csdn.net/youthon/article/details/7327776
delphi备份恢复剪切板
看了季世平老兄的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.
最新文章
- 封装用className选元素
- <; java.util >;-- Iterator接口
- 使用ssh远程执行命令批量导出数据库到本地
- PHP学习笔记三十一【const】
- NET Core Docker部署
- ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题
- WebForm 文件上传
- Node使用Mongoose操作MongoDB数据库——增删改查的实现
- POJ--3172 Scales (DFS 大容量背包 C++)
- 14 fragment 创建
- 什么是Java Bean
- js 键盘码
- golang ---tcmalloc浅析
- 一本通1649【例 2】2^k 进制数
- ASP入门(五)- VBScript过程和函数
- FREESWITCH 填坑指南
- Ubuntu 16.04下的安装RabbitMQ
- day6面向对象--继承、多态
- OpenWrt-Git依赖报错
- .net维护的一些心得