看了季世平老兄的C++代码后翻译过来的

  1. unit clipbak;
  2. interface
  3. uses
  4. SysUtils, Classes, Clipbrd, Windows, Contnrs;
  5. type
  6. TClipData = class
  7. Format: WORD;
  8. Data: THANDLE;
  9. end;
  10. TClipBackuper = class
  11. private
  12. ClipList: TList;
  13. public
  14. constructor Create;
  15. destructor Destroy; override;
  16. procedure BackupClip();
  17. procedure RestoreClip();
  18. end;
  19. implementation
  20. constructor TClipBackuper.Create;
  21. begin
  22. Cliplist := TObjectList.Create;
  23. end;
  24. destructor TClipBackuper.Destroy;
  25. begin
  26. ClipList.Free;
  27. end;
  28. procedure TClipBackuper.BackupClip;
  29. var
  30. i: Integer;
  31. Data: THANDLE;
  32. pcd: TClipData;
  33. DataMem: Pointer;
  34. begin
  35. ClipList.Clear();
  36. Clipboard.Open();
  37. try
  38. for i := 0 to Clipboard().FormatCount - 1 do
  39. begin
  40. pcd := TClipData.Create;
  41. pcd.Format := Clipboard().Formats[i];
  42. Data := THANDLE(Clipboard().GetAsHandle( pcd.Format));
  43. if (Data = 0) then
  44. begin
  45. pcd.free;
  46. continue;
  47. end;
  48. pcd.Data := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, GlobalSize(Data));
  49. DataMem := GlobalLock(pcd.Data);
  50. if (DataMem <> nil) then
  51. begin
  52. CopyMemory(DataMem, GlobalLock(Data), GlobalSize(Data));
  53. GlobalUnlock(THANDLE(pcd.Data));
  54. GlobalUnlock(THANDLE(Data));
  55. end;
  56. ClipList.Add(pcd);
  57. end;
  58. finally
  59. Clipboard().Close();
  60. end;
  61. end;
  62. procedure TClipBackuper.RestoreClip;
  63. var
  64. pcd: TClipData;
  65. i: Integer;
  66. begin
  67. Clipboard.Open();
  68. try
  69. Clipboard.Clear();
  70. for i := 0 to ClipList.Count - 1 do
  71. begin
  72. pcd := TClipData(ClipList[i]);
  73. SetClipboardData(pcd.Format, pcd.Data);
  74. end;
  75. ClipList.Clear();
  76. finally
  77. Clipboard().Close();
  78. end;
  79. end;
  80. end.

http://blog.csdn.net/youthon/article/details/7327776

最新文章

  1. 用python的BeautifulSoup分析html 【转】
  2. Spring2.5与JDK8的集成问题
  3. c++ exports def文件
  4. &lt;filter-mapping&gt; 的 &lt;dispatcher&gt; 的作用
  5. codeforce 600A - Extract Numbers
  6. 用PLSQL Developer粘贴数据的时候报oracle variant conversion error for variable v0
  7. CentOS 6.4 64位 安装 apache-tomcat-6.0.43
  8. Verilog 读写文件
  9. 内存管理之二——Cocos2d-x学习历程(六)
  10. myeclipse如何恢复已删除的文件和代码
  11. Linux SDK之uClinux、Broadcom、Atheros、Realtek、Ralink、Marvell、Intel
  12. j2ee5.0开发中jstl标签失效
  13. EntityFramework Core 2.1重新梳理系列属性映射(一)
  14. Go语言学习之11 日志收集系统kafka库实战
  15. FPM 0.08安装了打不开解决办法
  16. java validate date
  17. Java 容器源码分析之HashMap多线程并发问题分析
  18. 【刷题】BZOJ 3653 谈笑风生
  19. Linux - 搭建FastDFS分布式文件系统
  20. 2017-2018-1 20155220 《信息安全系统设计基础》课下实践——实现mypwd

热门文章

  1. .NET Framework基础知识(二)(转载)
  2. php面试题12(多态web服务器共享session的方法:将session存到数据库)($val=&amp;$data[$key];)
  3. [转] Valgrind使用
  4. [Angular] Some performance tips
  5. Qt for Automation
  6. Redis的常识
  7. 小强的HTML5移动开发之路(40)——jqMobi中实践header定义的几种方式
  8. ScrollView嵌套ListView问题
  9. Archive for the ‘Erlang’ Category 《Erlang编程指南》读后感
  10. TensorFlow 实战(四)—— tensor 的认识