版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
读剪切板
// 成功返回剪切板内容,失败返回 "error"。
char* getClipBoardValue(){
// 初始化
char *url,*pData;
size_t length;
// 打开剪切板
if(!OpenClipboard(NULL)){return "error";}
// 获取剪切板内的数据
HANDLE hData=GetClipboardData(CF_TEXT);
assert(hData!=NULL);
// 获取数据长度
length=GlobalSize(hData);
url=(char*)malloc(length+1);
// 将数据转换为字符
pData=(char*)GlobalLock(hData);
strcpy_s(url, length,pData);
// 一系列善后工作
GlobalUnlock(hData);
CloseClipboard();
url[length]=0;
return url;
}
写剪切板
// 成功返回 true,失败返回 false。
bool setClipBoardValue(string details){
// 打开剪切板
if(!OpenClipboard(NULL)){return false;}
// 清空剪切板数据
EmptyClipboard();
// 从堆中分配字节
HGLOBAL hmem = GlobalAlloc(GHND,sizeof(details));
// 锁定全局内存对象
LPVOID pmem = GlobalLock(hmem);
// 拷贝内存
memcpy(pmem,stringToCharP(details),sizeof(details));
// 写入剪切板
SetClipboardData(CF_TEXT,hmem);
// 关闭剪切板
CloseClipboard();
// 释放全局对象句柄
GlobalFree(hmem);
return true;
}
效果图:(如下我复制了右侧窗口中的文本)