剪切板操作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. }
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. }