你可以用WM_COPYDATA消息捎带数据啊,如下:
   COPYDATASTRUCT cds;
   char msg[100]="Test Message";
   cds.cbData =100;
   cds.lpData = (LPBYTE)msg;
   SendMessage(hDestWnd, WM_COPYDATA, (WPARAM)hSourceWnd, (LPARAM)&cds);绝对OK。

解决方案 »

  1.   

    好象还没有现成的消息吧.不过可以用自定义消息
    UINT uMyStringMsg = RegisterWindowMessage(TEXT(TransportString));在进程内你要传送字符串的地方调用
    SendMessage(HWND_BROADCAST, uMyStringMsg, 0, "需传递的字符串");在另一个进程的消息处理函数中
    switch (message)
    {
    .......
    case WM_COMMAND:
        switch (wParam)
       {
            default :
                if (message == uMyStringMsg)
                    str = CString(*lParam);
       }
    }先自定义一个消息,将要传送的字符串放在lParam参数中,以广播的方式或直接送给目标进程,在目标进程中对此自定义消息做处理,取出传来的字符串即可.
      

  2.   


        如果非要使用SendMessage的话,使用WM_COPYDATA几乎是最简单而可行的方法。如果你不使用WM_COPYDATA的话,请使用共享内存映射文件,否则会执行非法操作。   另外,如果是改变窗口的标题之类的标准文本操作的话(通常使用WM_SETTEXT等),因为Windows会自动在进程之间进行内存拷贝(因为可以使用strlen来得到字符串的大小),所以可以直接使用,就像是在同一个进程内。