C++进程通信之剪贴板

来源:互联网 发布:淘宝中秋节活动 编辑:程序博客网 时间:2024/05/16 13:56

采用剪贴板的方法,完成进程之间的通信。

1.把数据发送到剪贴板上

void CClipBoardDlg::OnBnClickedButtonSend(){if (OpenClipboard())//打开剪贴板{CString  csTemp;//保存发送编辑框内的数据HANDLE hClip;//保存调用GlobalAlloc函数后分配的内存对象的句柄char *pBuf;//保存调用AllocLock函数后返回的内存地址EmptyClipboard();//情况剪贴板上的数据GetDlgItemText(IDC_EDIT_SEND,csTemp);//得到发送编辑框中的内容hClip = GlobalAlloc(GMEM_MOVEABLE,csTemp.GetLength()+1);//分配内存pBuf = (char*)GlobalLock(hClip);//内存块加锁,将句柄转化为指针strcpy(pBuf,csTemp);GlobalUnlock(hClip);//内存块解锁SetClipboardData(CF_TEXT,hClip);//向剪贴板上放置数据CloseClipboard();//关闭剪贴板}}

2、得到剪贴板上的内容

void CClipBoardDlg::OnBnClickedButtonReceive(){if (OpenClipboard())//打开剪贴板{if (IsClipboardFormatAvailable(CF_TEXT))//判断剪贴板上是否存在文本格式{HANDLE hClip;char *pBuf;hClip = GetClipboardData(CF_TEXT);//获取剪贴板文本数据pBuf = (char *)GlobalLock(hClip);GlobalUnlock(hClip);SetDlgItemText(IDC_EDIT_RECEIVE,pBuf);//将剪贴板上的内容显示在编辑框里}CloseClipboard();//关闭剪贴板}}


0 0