上位机MFC实现剪贴板内容查看
例程实现剪切板内容查看功能。
功能简单,有需要的朋友可以下载参考。
关键代码为:
- void CClipBoardAccessDlg::OnObtain()
- {
- // TODO: Add your control notification handler code here
- if (!::OpenClipboard(m_hWnd))
- {
- AfxMessageBox(_T("有其它程序打开了剪贴板!"));
- return;
- }
-
- HGLOBAL hMem;
- LPSTR lpStr;
- UINT uFormat = ::EnumClipboardFormats(0);
- // 处理剪贴板为空的情形
- if (!uFormat)
- {
- AfxMessageBox(_T("剪贴板为空!"));
- return;
- }
- // 以特定方式获得剪贴板数据
- while (1)
- {
- hMem = ::GetClipboardData(uFormat);
- lpStr = (LPSTR)::GlobalLock(hMem);
- if (lpStr)
- break;
- uFormat = ::EnumClipboardFormats(uFormat);
- }
- // 获得剪贴板数据长度
- SIZE_T size = ::GlobalSize(hMem);
- CString strShow,strAdd;
- UINT nLine;
- SIZE_T counter;
- for (counter = 0,nLine = 1;counter <= size;counter++,nLine++)
- {
- strAdd.Format("%02x ",(UCHAR)lpStr[counter]);
- strShow += strAdd;
- if (nLine % 8 == 0)
- {
- nLine %= 8;
- strShow += "\r\n";
- }
- if (counter == 0x100)
- {
- AfxMessageBox(_T("剪贴板数据太多,这里只显示前256字节的内容"));
- break;
- }
- }
- // 解除对剪贴板句柄的锁定,关闭剪贴板供其它程序使用
- ::GlobalUnlock(hMem);
- ::CloseClipboard();
- // 显示数据类型
- switch (uFormat)
- {
- case CF_TEXT:
- case CF_UNICODETEXT:
- SetRadio(0);
- break;
- case CF_BITMAP:
- case CF_DIB:
- case CF_PALETTE:
- case CF_TIFF:
- SetRadio(1);
- break;
- case CF_ENHMETAFILE:
- case CF_WAVE:
- case CF_RIFF:
- SetRadio(2);
- break;
- default:
- SetRadio(3);
- break;
- }
- // 将数据显示到编辑控件中
- SetDlgItemText(IDC_EDIT_SHOW,strShow);
- // 显示剪贴板数据长度
- strAdd.Format("剪贴板中数据共%o字节",(LONGLONG)size);
- SetDlgItemText(IDC_EDIT_LENGTH,strAdd);
- }
复制代码 源代码下载地址:
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|