http://blog.csdn.net/youthon/article/details/7327776
 
delphi备份恢复剪切板                   
        分类:            Delphi编程2012-03-07 10:31578人阅读 
看了季世平老兄的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.  
 
 delphi备份恢复剪切板
原文:http://www.cnblogs.com/delphi-xe5/p/4649986.html