C++进程通信之剪贴板

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

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();//关闭剪贴板
	}
}


你可能感兴趣的:(C++,剪贴板,MFC,c++)