zoukankan      html  css  js  c++  java
  • 用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
  • 相关阅读:
    java8
    java7
    java6
    java5
    java复习4
    学习笔记
    Reflection笔记
    通过Reflection来获得方法和信息
    學習反射2
    學習反射1
  • 原文地址:https://www.cnblogs.com/greatverve/p/WM_COPYDATA.html
Copyright © 2011-2022 走看看