找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 135|回复: 0

[每日一码] 剪切板内容的数据格式

[复制链接]

1

主题

0

回帖

33

积分

管理员

积分
33
发表于 2024-3-14 20:44:53 | 显示全部楼层 |阅读模式
  1. // 【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式  
  2. // http://blog.csdn.net/morewindows/article/details/17655299  
  3. // 参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms649013(v=vs.85).aspx  
  4. #include <Windows.h>  
  5. #include <iostream>  
  6. #include <cstdio>  
  7. using namespace std;  
  8. int main()  
  9. {  
  10.         printf("   【MoreWindows工作笔记11】OleGetClipboard 访问剪切板的文本内容\n");  
  11.         printf(" - http://blog.csdn.net/morewindows/article/details/17655053 -\n");  
  12.         printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n");  
  13.         if (OpenClipboard(NULL))   
  14.         {  
  15.                 // 由于设置了VX在复制时带上文字颜色,所以从VS2008中拷贝文本时,数据格式不为CF采用UNICODETEXT  
  16.                 UINT clipboard采用format;  
  17.                 while (clipboard采用format = EnumClipboardFormats(0))   
  18.                 {  
  19.                         printf("Clipboard Data Format = 0x%x\n", clipboard采用format);  
  20.                         HGLOBAL global采用memory = GetClipboardData(clipboard采用format);  
  21.                         LPCSTR clipboard采用data = (LPCSTR)GlobalLock(global采用memory);  
  22.                         if (clipboard采用data != NULL)   
  23.                         {  
  24.                                 // 剪切板上数据的地址  
  25.                                 printf("Clipboard Data Address = 0x%x\n", global采用memory);  
  26.                                 // 剪切板上数据大小  
  27.                                 DWORD data采用size = GlobalSize(global采用memory);  
  28.                                 printf("Data Size = %d\n", data采用size);  
  29.                                 // 16进制输出数据  
  30.                                 printf("Data: ");  
  31.                                 for (DWORD i = 0; i < data采用size; i++)   
  32.                                 {  
  33.                                         if (i % 8 == 0) putchar(' ');  
  34.                                         if (i % 16 == 0) putchar('\n');  
  35.                                         printf("%02x ", (UCHAR)clipboard采用data[i]);  
  36.                                 }  
  37.                                 putchar('\n');  
  38.                                 // 输出部分数据  
  39.                                 switch (clipboard采用format)   
  40.                                 {  
  41.                                 case CF采用TEXT:  
  42.                                         printf(" 数据格式:CF采用TEXT   数据内容:\n%s\n", clipboard采用data);  
  43.                                         break;  
  44.                                 case CF采用UNICODETEXT:  
  45.                                         printf(" 数据格式:CF采用UNICODETEXT 数据内容:\n%ls\n", (LPCWSTR)clipboard采用data);  
  46.                                         break;  
  47.                                 }  
  48.                                 GlobalUnlock(global采用memory);  
  49.                         }  
  50.                 }CloseClipboard();  
  51.         }  
  52.         return 0;  
  53. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 20:42 , Processed in 0.107088 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表