|
- // 【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式
- // http://blog.csdn.net/morewindows/article/details/17655299
- // 参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms649013(v=vs.85).aspx
- #include <Windows.h>
- #include <iostream>
- #include <cstdio>
- using namespace std;
- int main()
- {
- printf(" 【MoreWindows工作笔记11】OleGetClipboard 访问剪切板的文本内容\n");
- printf(" - http://blog.csdn.net/morewindows/article/details/17655053 -\n");
- printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n");
- if (OpenClipboard(NULL))
- {
- // 由于设置了VX在复制时带上文字颜色,所以从VS2008中拷贝文本时,数据格式不为CF采用UNICODETEXT
- UINT clipboard采用format;
- while (clipboard采用format = EnumClipboardFormats(0))
- {
- printf("Clipboard Data Format = 0x%x\n", clipboard采用format);
- HGLOBAL global采用memory = GetClipboardData(clipboard采用format);
- LPCSTR clipboard采用data = (LPCSTR)GlobalLock(global采用memory);
- if (clipboard采用data != NULL)
- {
- // 剪切板上数据的地址
- printf("Clipboard Data Address = 0x%x\n", global采用memory);
- // 剪切板上数据大小
- DWORD data采用size = GlobalSize(global采用memory);
- printf("Data Size = %d\n", data采用size);
- // 16进制输出数据
- printf("Data: ");
- for (DWORD i = 0; i < data采用size; i++)
- {
- if (i % 8 == 0) putchar(' ');
- if (i % 16 == 0) putchar('\n');
- printf("%02x ", (UCHAR)clipboard采用data[i]);
- }
- putchar('\n');
- // 输出部分数据
- switch (clipboard采用format)
- {
- case CF采用TEXT:
- printf(" 数据格式:CF采用TEXT 数据内容:\n%s\n", clipboard采用data);
- break;
- case CF采用UNICODETEXT:
- printf(" 数据格式:CF采用UNICODETEXT 数据内容:\n%ls\n", (LPCWSTR)clipboard采用data);
- break;
- }
- GlobalUnlock(global采用memory);
- }
- }CloseClipboard();
- }
- return 0;
- }
复制代码 |
|