用WM_COPYDATA实现进程通信
2012-12-17 21:02
507 查看
用WM_COPYDATA的前提:
1,知道接收消息进程的句柄。
2,接收消息进程重载了WM_COPYDATA消息映射
发送端
void CSendDlg::OnBnClickedSend()
{
CWnd *pWnd = CWnd::FindWindow(NULL,"接收窗口的标题");
CString sCopyData = "传递的字符串";
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = sCopyData.GetLength() + 1;//多加一个长度,防止乱码
cpd.lpData = (void*)sCopyData.GetBuffer(cpd.cbData);
pWnd->SendMessage(WM_COPYDATA,NULL,(LPARAM)&cpd);
}
接收端
// 声明
afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
// 实现
ON_WM_COPYDATA()
BOOL CReceiveDlg::OnCopyData( CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct )
{
AfxMessageBox((LPCSTR)(pCopyDataStruct->lpData));
return CWnd::OnCopyData(pWnd, pCopyDataStruct);
}注意乱码的处理。
url:http://greatverve.cnblogs.com/archive/2012/12/17/WM_COPYDATA.html
1,知道接收消息进程的句柄。
2,接收消息进程重载了WM_COPYDATA消息映射
发送端
void CSendDlg::OnBnClickedSend()
{
CWnd *pWnd = CWnd::FindWindow(NULL,"接收窗口的标题");
CString sCopyData = "传递的字符串";
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = sCopyData.GetLength() + 1;//多加一个长度,防止乱码
cpd.lpData = (void*)sCopyData.GetBuffer(cpd.cbData);
pWnd->SendMessage(WM_COPYDATA,NULL,(LPARAM)&cpd);
}
接收端
// 声明
afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
// 实现
ON_WM_COPYDATA()
BOOL CReceiveDlg::OnCopyData( CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct )
{
AfxMessageBox((LPCSTR)(pCopyDataStruct->lpData));
return CWnd::OnCopyData(pWnd, pCopyDataStruct);
}注意乱码的处理。
url:http://greatverve.cnblogs.com/archive/2012/12/17/WM_COPYDATA.html
相关文章推荐
- WM_COPYDATA实现进程间数据通信
- 用WM_COPYDATA实现进程通信
- 用WM_COPYDATA实现进程通信
- [转载]用WM_COPYDATA实现进程通信
- 发送WM_COPYDATA消息实现进程间的通信
- 用WM_COPYDATA消息来实现两个进程之间传递数据
- WM_COPYDATA实现进程间数据共享
- 进程通信之一使用WM_COPYDATA
- 进程通信 WM_COPYDATA与HWND_BROADCAST
- 进程通信之一 使用WM_COPYDATA C++及C#实现
- (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- 如果在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- [转]如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- WM_COPYDATA实现进程间数据共享
- 进程通信之一 使用WM_COPYDATA C++及C#实现 z
- 如何在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- 利用WM_COPYDATA进行进程间单向通信
- WM_COPYDATA实现进程间数据共享
- 跨进程通信之WM_COPYDATA
- 用WM_COPYDATA消息来实现两个进程之间传递数据