WM_COPYDATA进行进程之间的数据通信

来源:互联网 发布:ubuntu 安装中文支持 编辑:程序博客网 时间:2024/06/06 17:48

  1. 利用WM_COPYDATA进行进程之间的数据交换

    发送方代码:

CString strDataToSend = _T( "Hello1" );  //需要传递的数据

        HWND hWndReceived=::FindWindow(NULL,"temp");     //进程B的接收数据窗口对象

        if (hWndReceived==NULL)

        {

        /*    AfxMessageBox("no");*/

                  return;

        }

        //COPYDATASTRUCT结构是WM_COPYDATA传递的数据结构对象

        COPYDATASTRUCT cpd;

        cpd.dwData = 0;

        cpd.cbData = strDataToSend.GetLength();           //传递的数据长度

        cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //传递的数据地址

        ::SendMessage(hWndReceived,WM_COPYDATA,(WPARAM)GetSafeHwnd(),(LPARAM)&cpd);

        strDataToSend.ReleaseBuffer();

  1. 接收方添加消息

BOOL CTempDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)

{

        // TODO: Add your message handler code here and/or call default

        if (pCopyDataStruct->cbData>0)

        {

                  char recvData[256]={0};

        strncpy(recvData,(char*)pCopyDataStruct->lpData,pCopyDataStruct->cbData);

                  SetWindowText(recvData);

        }

        return CDialog::OnCopyData(pWnd, pCopyDataStruct);

}

 

0 0
原创粉丝点击