剪切板操作SetClipboardData GetClipboardData

Code:
  1. // Funciton:   
  2. // 拷贝数据到剪切板  
  3. // 从剪切板粘贴数据   
  4. // Data:2011/4/8   
  5. #include <windows.h>  
  6. #include <stdio.h>  
  7. void SetDataToClip(void)    
  8. {   
  9.     // 打开剪贴板  
  10.     if (!OpenClipboard(NULL)|| !EmptyClipboard())    
  11.     {   
  12.         printf("打开或清空剪切板出错!/n");   
  13.         return;   
  14.     }   
  15.        
  16.     HGLOBAL hMen;   
  17.     TCHAR strText[256] = "我被拷贝到剪切板!/n";   
  18.        
  19.     // 分配全局内存   
  20.     hMen = GlobalAlloc(GMEM_MOVEABLE, ((strlen(strText)+1)*sizeof(TCHAR)));    
  21.        
  22.     if (!hMen)   
  23.     {   
  24.         printf("分配全局内存出错!/n");    
  25.         // 关闭剪切板   
  26.         CloseClipboard();   
  27.         return;         
  28.     }   
  29.        
  30.     // 把数据拷贝考全局内存中  
  31.     // 锁住内存区   
  32.     LPSTR lpStr = (LPSTR)GlobalLock(hMen);    
  33.        
  34.     // 内存复制  
  35.     memcpy(lpStr, strText, ((strlen(strText))*sizeof(TCHAR)));    
  36.     // 字符结束符   
  37.     lpStr[strlen(strText)] = (TCHAR)0;   
  38.     // 释放锁   
  39.     GlobalUnlock(hMen);   
  40.        
  41.     // 把内存中的数据放到剪切板上  
  42.     SetClipboardData(CF_TEXT, hMen);   
  43.     CloseClipboard();   
  44.        
  45.     return;   
  46. }   
  47. void GetDataFromClip()   
  48. {   
  49.     // 判断数据格式   
  50.     if (!IsClipboardFormatAvailable(CF_TEXT) )   
  51.     {   
  52.         printf("剪切板数据格式不是CF_TEXT/n");   
  53.         return;   
  54.     }   
  55.        
  56.     if (!OpenClipboard(NULL))    
  57.     {   
  58.         printf("打开剪切板出错!/n");   
  59.         return;   
  60.     }   
  61.     // 从剪切板获取数据   
  62.     HGLOBAL hMem = GetClipboardData(CF_TEXT);   
  63.     if (hMem)   
  64.     {    
  65.         //  获取字符串   
  66.         LPSTR lpStr = (LPSTR)GlobalLock(hMem);     
  67.         if (lpStr)   
  68.         {   
  69.             printf(lpStr);   
  70.             // 释放内存锁   
  71.             GlobalUnlock(hMem);    
  72.         }   
  73.     }    
  74.     // 关闭剪切板   
  75.     CloseClipboard();    
  76. }   
  77. int main(void)   
  78. {   
  79.     //SetDataToClip();  
  80.     GetDataFromClip();    
  81.     return 0;   
  82. }  

 


版权声明:本文为ycc892009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。