剪贴板操作
[編輯] [转简体] (简体译文)
|
作者:huidong
| 分類:【編程】Win32
[
3 瀏覽
0 評論
0 贊
0 踩
]
概要
两个函数操作剪贴板
正文
#include <Windows.h> // 复制数据至剪切板 void CopyToClipboard(const char* data) { if (!data) { return; } int nDataLen = strlen(data) + 1; // 将数据保存至粘贴板 HGLOBAL hClip; // 定义一个HGLOBAL句柄变量用来指向分配的内存块 if (OpenClipboard(NULL)) { // 将剪贴板内容清空 EmptyClipboard(); // 在堆上分配可移动的内存块,程序返回一个内存句柄 hClip = GlobalAlloc(GMEM_MOVEABLE, nDataLen); // 对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1 char* buff = (char*)GlobalLock(hClip); strcpy_s(buff, nDataLen, data); // 数据写入完毕,进行解锁操作,并将引用计数器数字减1 GlobalUnlock(hClip); // 将存放有数据的内存块放入剪贴板的资源管理中 SetClipboardData(CF_TEXT, hClip); // 关闭剪贴板,释放剪贴板资源的占用权 CloseClipboard(); } } // 从剪切板中取得数据 void GetTextFromClipboard(char* pStr, int size) { if (OpenClipboard(NULL))//打开剪贴板 { if (IsClipboardFormatAvailable(CF_TEXT))//判断格式是否是我们所需要 { HANDLE hClip; //读取数据 hClip = GetClipboardData(CF_TEXT); char* str = (char*)GlobalLock(hClip); memset(pStr, 0, size); if (str != NULL) strcpy_s(pStr, size, str); GlobalUnlock(hClip); CloseClipboard(); } } }
亲测可用(VS2019)