写入、获取系统剪帖板中的文本数据
程序截图如下:
主要代码如下:
// 往剪贴板写入数据函数 bool WriteDataToClipboard(CString data) { if (::OpenClipboard(AfxGetMainWnd()->m_hWnd))//打开剪贴板 { //清空剪贴板 EmptyClipboard(); //开辟内存空间 HANDLE hClip=GlobalAlloc(GMEM_MOVEABLE,data.GetLength()+1); //获取以上所开辟的内存空间的地址,并锁定它 char* pBuf=(char*)GlobalLock(hClip); //将数据复制到以上所开辟的内存空间中 strcpy(pBuf,data); //解锁刚才开辟的内存空间 GlobalUnlock(hClip); //设置复制到剪帖板中的数据的格式 SetClipboardData(CF_TEXT,hClip); //关闭剪贴板 CloseClipboard(); return true; } return false; } // 从剪贴板获取数据函数 CString GetDataFromClipboard(CString data) { if (OpenClipboard(AfxGetMainWnd()->m_hWnd)) //打开剪贴板 { if (IsClipboardFormatAvailable(CF_TEXT)) //判断格式是否是文本数据 { //读取数据 HANDLE hClip=GetClipboardData(CF_TEXT); char* pBuf=(char*)GlobalLock(hClip); GlobalUnlock(hClip); //关闭剪帖板 CloseClipboard(); //返回获取后的数据 CString data=""; data.Format("%s",pBuf); return data; } } return "NULL"; } 工程是Unicode编码时,请参考以下代码: 来源地址:http://topic.csdn.net/u/20100526/16/be885a28-fca7-48bf-97d2-21751d8f20e8.html?1689013075 //清空剪切板原有数据 if(!EmptyClipboard()) return; CString str; GetDlgItem(IDC_EDIT2)->GetWindowText(str); HANDLE hClip=GlobalAlloc(GMEM_MOVEABLE,(str.GetLength()+1)*2); WCHAR* pBuf=(WCHAR*)GlobalLock(hClip); wcscpy(pBuf,str.GetBuffer()); str.ReleaseBuffer(); GlobalUnlock(hClip); SetClipboardData(CF_UNICODETEXT,hClip); CloseClipboard();
探索代码的奥秘,享受技术的乐趣-_-!...