QQ登录

只需一步,快速开始

220上位机VC MFC监控与获取系统剪切板内容

[ 复制链接 ]

220上位机VC MFC监控与获取系统剪切板内容

220上位机VC MFC监控与获取系统剪切板内容
220上位机VC MFC监控与获取系统剪切板内容
功能展示
我们操作电脑时,用鼠标复制内容,再到别处粘贴,复制的内容就会被粘上,那么这复制的内容用代码如何获取呢?我们当前例程就来编写代码获取用户复制的的内容,效果如图,当用户用鼠标复制了内容,内容就会被我们编写的程序获取,并显示在我们例程的编辑框中;
要点提示
系统有一套剪贴板观察器链,我们只要调用函数SetClipboardViewer(),系统的剪切板内容发生变化时,都会通过消息WM_DRAWCLIPBOARD,向我们窗口传递剪切板内容;所以我们映射此函数便可获得剪切板内容;如例程关联的函数为OnDrawClipboard()在函数体内调用函数GetPriorityClipboardFormat ()OpenClipboard () GetClipboardData () GlobalUnlock () CloseClipboard (),获得具体剪切板内容;
int GetPriorityClipboardFormat(
UINT* paFormatPriorityList, //指向一组剪贴板格式的无符号整数
int cFormats // paFormatPriorityList包含的数量
);
OpenClipboard() CloseClipboard ()用于打开与关闭剪切板, GetClipboardData ()用于获取剪切板内容
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1,用于显示获得的剪切板内容;
添加变量HWND m_hView;用于剪切板链内当前窗口句柄的保存;
在OnInitDialog()初始化m_hView=SetClipboardViewer(); //将本窗口注册到Clipboard Viewer Chain 中,并保存链中下一窗口句柄
3.在程序退出函数OnDestroy()内删除剪切板链本窗口: ChangeClipboardChain(m_hView);//从Clipboard Viewer Chain 中注销本窗口
4.关联消息WM_CHANGECBCHAIN, WM_DRAWCLIPBOARD
  1. void CGkbc8Dlg::OnChangeCbChain(HWND hWndRemove, HWND hWndAfter) //clipboard viewer注销时
  2. {
  3.         CDialog::OnChangeCbChain(hWndRemove, hWndAfter);
  4.         //<>如果注销的窗口是本窗口下一窗口,则修改本窗口保存的下一窗口句柄
  5.         if((HWND)hWndRemove == m_hView )
  6.                 m_hView = hWndAfter;
  7. }
  8. void CGkbc8Dlg::OnDrawClipboard() //剪切析内容变化时
  9. {
  10.         CString sText;
  11.         HGLOBAL hMem;
  12.         LPTSTR lpStr;
  13.         UINT nFormats[]={CF_BITMAP,CF_DSPBITMAP,CF_TEXT};//根据需要添加监控类型
  14.         int nFormat= GetPriorityClipboardFormat(nFormats,sizeof(nFormats));
  15.         switch(nFormat)//罗列的类型根据需要处理
  16.         {
  17.         case CF_TEXT://是文件类型时
  18.                 OpenClipboard();
  19.                 hMem = GetClipboardData(CF_TEXT);
复制代码
  1.   lpStr =(LPTSTR)GlobalLock(hMem);
  2.                 SetDlgItemText(IDC_EDIT1,lpStr);//在编程框中显示剪切板内容
  3.                 sText.Format("%s",lpStr);
  4.                 if( sText.Right(sText.GetLength()-sText.ReverseFind('.')) ==".com")//额外功能-直接打开网址
  5.                 {
  6.                         if(sText.Left(sText.Find('.')+1)!="www.")
  7.                                 sText.Insert(0,"www.");
  8.                         ShellExecute(m_hWnd,"open",sText,NULL,NULL,SW_SHOW);
  9.                 }
  10.                
  11.                 GlobalUnlock(hMem);
  12.                 CloseClipboard();
  13.                 break;
  14.         default:
  15.                 break;
  16.         }
  17.         CDialog::OnDrawClipboard();
  18. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:220.上位机VC MFC监控与获取系统剪切板内容.rar 
文件大小:131.59 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索