工控编程吧
标题:
220上位机VC MFC监控与获取系统剪切板内容
[打印本页]
作者:
qq263946146
时间:
2016-2-28 12:28
标题:
220上位机VC MFC监控与获取系统剪切板内容
(, 下载次数: 1)
上传
点击文件名下载附件
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
void CGkbc8Dlg::OnChangeCbChain(HWND hWndRemove, HWND hWndAfter) //clipboard viewer注销时
{
CDialog::OnChangeCbChain(hWndRemove, hWndAfter);
//<>如果注销的窗口是本窗口下一窗口,则修改本窗口保存的下一窗口句柄
if((HWND)hWndRemove == m_hView )
m_hView = hWndAfter;
}
void CGkbc8Dlg::OnDrawClipboard() //剪切析内容变化时
{
CString sText;
HGLOBAL hMem;
LPTSTR lpStr;
UINT nFormats[]={CF_BITMAP,CF_DSPBITMAP,CF_TEXT};//根据需要添加监控类型
int nFormat= GetPriorityClipboardFormat(nFormats,sizeof(nFormats));
switch(nFormat)//罗列的类型根据需要处理
{
case CF_TEXT://是文件类型时
OpenClipboard();
hMem = GetClipboardData(CF_TEXT);
复制代码
lpStr =(LPTSTR)GlobalLock(hMem);
SetDlgItemText(IDC_EDIT1,lpStr);//在编程框中显示剪切板内容
sText.Format("%s",lpStr);
if( sText.Right(sText.GetLength()-sText.ReverseFind('.')) ==".com")//额外功能-直接打开网址
{
if(sText.Left(sText.Find('.')+1)!="www.")
sText.Insert(0,"www.");
ShellExecute(m_hWnd,"open",sText,NULL,NULL,SW_SHOW);
}
GlobalUnlock(hMem);
CloseClipboard();
break;
default:
break;
}
CDialog::OnDrawClipboard();
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/23d3ec7660ad28683b2b13a22d55d790/0/0/w_19rszr6nxh.swf-albumId=5382456009-tvId=5382456009-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4