vc获取剪贴板文本内容

前言:

本文目前仅限于获取和设置剪贴板的文本内容,还未涉及到图片等资源;

示例:

一:设置剪贴板文本内容(支持一般符号,,特殊符号未测试)

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是通过string封装的,重载了 “=”号)

//获取剪贴板文本内容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; } 待续……

看自家总在期待,不知将来好歹,新乐吧总在不断等待,

vc获取剪贴板文本内容

相关文章:

你感兴趣的文章:

标签云: