用WM_COPYDATA实现进程通信


用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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM