注意:此方法只限于发送端和接收端在同一台机器上。不同机器还是TCP。
发送消息端:
- const char* msg = "ReqLoginStatus";
- COPYDATASTRUCT cpd;
- cpd.dwData = 0;
- cpd.cbData = strlen(msg)+1;
- cpd.lpData = (void*)msg;
-
- HWND hWnd = ::FindWindow(NULL,CA2W("客户端"));
- if (hWnd)
- {
- LRESULT lr =::SendMessage(hWnd,WM_COPYDATA,(WPARAM)m_hWnd,(LPARAM)&cpd);
- if (lr!=S_OK){
- logs->WriteFormat("发送ReqLoginStatus失败");
- }
- }
接收端:
- switch (uMsg)
- {
- case WM_COPYDATA:
- {
- MessageBoxA(NULL,"recved","",MB_OK);
- COPYDATASTRUCT *pCopyData = (COPYDATASTRUCT*)lParam;
- char szBuffer[300];
-
- memset(szBuffer, 0, sizeof(szBuffer));
- sprintf(szBuffer, "dwData:%d cbData:%d\r\nlpData:0x%08x = %s\r\n\r\n",
- pCopyData->dwData, pCopyData->cbData,
- (PVOID)pCopyData->lpData, (char*)pCopyData->lpData);
-
- break;
- }
- }