发送端:
HWND hWndtoSend = ::FindWindow(
L"TESTCOPYDATAB", 
L"TestCopyDataB"); if(hWndtoSend != NULL)
{
COPYDATASTRUCT copydata;
copydata.cbData = 0;
copydata.dwData = sizeof(L"111");
copydata.lpData = (LPVOID)L"111"; ::SendMessage(hWndtoSend,WM_COPYDATA,NULL,(LPARAM)&copydata);
}
         跟踪看了dwData是8;
接受端:
HRESULT OnCopyData(WPARAM wParam,LPARAM lParam)
{
PCOPYDATASTRUCT pCopyData = PCOPYDATASTRUCT(lParam);
TCHAR* psz = (TCHAR*)pCopyData->lpData;

return 0;
}
psz 是乱码,怎么回事啊,谢谢!

解决方案 »

  1.   

    关键在于你传递了一个指针变量!这个是不行的,你要传递的字符串不要以char*的方式传送,而要以 char[]的方式copy过来,
      

  2.   

    LZ搞错了,数据的大小以copydata.cbData指定,而不是copydata.dwData。
      

  3.   

    CString str;
    str = _T("111");
    COPYDATASTRUCT copydata;
    copydata.cbData = str.GetLength()+1;
    copydata.dwData = sizeof(L"111");
    copydata.lpData = (LPVOID)str.GetBuffer(copydata.cbData);
    ::SendMessage(hWndtoSend,WM_COPYDATA,
    (WPARAM)this->m_hWnd,(LPARAM)&copydata);
    str.ReleaseBuffer();