This message is sent when an application passes data to another application. WM_COPYDATA wParam = (WPARAM)(HWND) hwnd; 
  lParam = (LPARAM)(PCOPYDATASTRUCT) pcds;
Parameters
hwnd 
Handle to the window passing the data. 
pcds 
Pointer to a COPYDATASTRUCT structure that contains the data to be passed. msdn不是很详细吗?

解决方案 »

  1.   

    typedef struct tagCOPYDATASTRUCT {
    DWORD dwData; 
    DWORD cbData; 
    PVOID lpData; 
    } COPYDATASTRUCT; 
    Members
    dwData 
    Specifies up to 32 bits of data to be passed to the receiving application. 
    cbData 
    Specifies the size, in bytes, of the data pointed to by the lpData member. 
    lpData 
    Long pointer to data to be passed to the receiving application. This member can be NULL. 
    一楼是指针好不好,我觉得可以,你试试
    just do it
      

  2.   

    用WM_COPYDATA的前提:1,知道接收消息进程的句柄。2,接收消息进程重载了WM_COPYDATA消息映射,能对其做出反应(否则不是发送端自作多情了?)看过前提,得出结论:在自己写的两个进程间用WM_COPYDATA再好不过。下面CODE几行就说明了一切。获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....(不说这些,跑踢儿了都)OK,开始写发送端代码:HWND hWnd = FindWindow(NULL,"MyApp");if(hWnd!=NULL){      COPYDATASTRUCT cpd; /*给COPYDATASTRUCT结构赋值*/      cpd.dwData = 0;      cpd.cbData = strlen("字符串");      cpd.lpData = (void*)"字符串";      ::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cpd);//发送!      /*完事儿了!!*/}接收端重载ON_WM_COPYDATA消息映射函数(下面是手工所要加的,你最好还是用ClassWizard)afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);ON_WM_COPYDATA()/*消息映射*/BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
    {
            AfxMessageBox((LPCSTR)(pCopyDataStruct->lpData));/*利用对话框表示收到消息*/        return CWnd::OnCopyData(pWnd, pCopyDataStruct);
    }
    进程通信还有其他一些手段,相对来说比较麻烦,但局限性要比WM_COPYDATA小。当然你也可以两端都注册一个消息来通信。http://blog.csdn.net/scq2099yt/archive/2008/03/21/2202555.aspx