进程间通信方式的种类

1socket编程 IP和端口
2剪切板 剪切板的内核对象
3邮槽 邮槽的内核对象
4匿名管道
5命名管道
6Copy_data findwindows wm_copydata 很多书籍都没有 消息
Sendmessage

示例代码

void CClipDlg::OnBnClickedSendBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	//1打开剪切板
	if(OpenClipboard()){
		//2清空剪切板
		EmptyClipboard();

		char* szSendBuf;//要发送的数据
		//3获取编辑框的内容
		CStringW strSendW;
		GetDlgItemText(IDC_EDIT_SEND,strSendW);
		CStringA strSend=(CStringA)strSendW;

		//4分配一个内存对象,内存对象的句柄就是hClip
		HANDLE hClip=GlobalAlloc(GMEM_MOVEABLE,strSend.GetLength()+1);
		//5将剪切板句柄加锁
		szSendBuf=(char*)GlobalLock(hClip);
		//USES_CONVERSION;
		//char *szMySendBuf=T2A(strSend);
		strcpy(szSendBuf,strSend);
		GlobalUnlock(hClip);

		//6将数据放入剪切板
		SetClipboardData(CF_TEXT,hClip);

		//7   关闭剪切板
		CloseClipboard();
	}



}

void CClipDlg::OnBnClickedRecvBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	if(OpenClipboard()){
		//确认剪切板是否可用
		if(IsClipboardFormatAvailable(CF_TEXT)){
			HANDLE hClip;
			char* pBuf;
			//向剪切板要数据
			hClip=GetClipboardData(CF_TEXT);
			pBuf=(char*)GlobalLock(hClip);
			USES_CONVERSION;
			LPCWSTR strBuf=A2W(pBuf);
			GlobalUnlock(hClip);
			SetDlgItemText(IDC_EDIT_RECV,strBuf);
		}
		CloseClipboard();
	}

}

效果展示

MFC---进程间的通信方式(剪切板)_控件