前言:
本文目前仅限于获取和设置剪贴板的文本内容,还未涉及到图片等资源;
示例:
一:设置剪贴板文本内容(支持一般符号,特殊符号未测试)
bool SetClipBoardText(LPCSTR text,HWND hWnd) { ASSERT(hWnd); //打开剪贴板 if ( !::OpenClipboard(hWnd) ) return false; //如果剪贴板有内容则关闭剪贴板 if ( !EmptyClipboard() ) { CloseClipboard(); return false; } //获取需要设置文本的长度 int len=strlen(text); //申请剪贴板空间 HANDLE hClip=GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE,(len+1)*sizeof(char*)); if (hClip==NULL) { CloseClipboard(); return false; } //给申请的空间加锁 char* pBuf=(char*)GlobalLock(hClip); if (pBuf==NULL) { GlobalFree(hClip); CloseClipboard(); return false; } //拷贝文本内容到剪贴板 memcpy((char *)pBuf,text,len*sizeof(char*)); pBuf[len]=NULL; //操作完成,释放锁 GlobalUnlock(hClip); if (NULL==SetClipboardData(CF_TEXT,hClip)) { GlobalFree(hClip); CloseClipboard(); return false; } CloseClipboard(); return true; }
//获取剪贴板文本内容 std_string GetClipBoardText(HWND hWnd) { ASSERT(hWnd); std_string ClipBoardText; //判断剪贴板的数据格式是否可以处理。 if (!IsClipboardFormatAvailable(CF_TEXT)) return ClipBoardText; //打开剪贴板。 if (!::OpenClipboard(hWnd)) return ClipBoardText; //获取数据 HANDLE hMem = GetClipboardData(CF_TEXT); if (hMem != NULL) { //获取字符串。 LPSTR lpStr = (LPSTR)GlobalLock(hMem); if (lpStr != NULL) { ClipBoardText=lpStr; //释放锁内存 GlobalUnlock(hMem); } } //关闭剪贴板 CloseClipboard(); return ClipBoardText; }
原文地址:http://blog.csdn.net/qingzai_/article/details/44853635