主要通过WM_COPYDATA消息接收其他进程发来的消息
1,发送端进程代码
void SendMessageToOtherWnd(char* pData) //参数可以是字符串,数组,结构体等
{
if (NULL == pData || strlen(pData) <= 0) return -1;
CWnd *pWnd = NULL;
pWnd = CWnd::FindWindow(NULL, _T("OtherWnd")); //要发送的窗口句柄,名字是创建时传入
if (NULL == pWnd) return -1;
UpdateData(); // 更新数据
COPYDATASTRUCT cds;
cds.dwData = 1; //发送类型:0不知是什么,测过字符串可以,1字符串,2数组,3结构体
cds.cbData = 10; //发送长度
cds.lpData = pData; //要发送的数据
pWnd->SendMessage(WM_COPYDATA, NULL, (LPARAM)&cds);
}
2,接收端进程代码
消息处理函数中
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_COPYDATA:
COPYDATASTRUCT *pCopyDataStruct = (COPYDATASTRUCT *)lParam;
char *pData = (char*)pCopyDataStruct->lpData; //接收到的数据,你可自行处理