用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