进程间通信方式的种类
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();
}
}
效果展示