1。我的问题是这样的,一个主程序 A , 另外一个程序 B  
   启动B的运行,但是A要传递给B两个参数: CString name ;int fun ;
   怎么办?
 方法一:
       发送消息;
        A :SendMessage(HWnd,WM_MYMESSAGE,WPARAM name.GetBuffer(0),LPARAM fun) ;
        B:   ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
         afx void OnMyMessage(WPARAM name,LPARAM fun)
         ..
         OnMyMessage(WPARAM name,LPARAM fun)
        {
           CString strTmp = name ;
           int     nTmp = fun ;
         }
    // 错,不能传递字符串。进程之间的数据是私有的吧
 方法二:
        ShellExcute() ;
        其中含有一个进程启动的参数但是我不知道怎么能够把这个参数解析出来?谢谢!

解决方案 »

  1.   

    用SendMessage()函数传递字符串
    -----------------------------
    void CAaaDlg::OnButton1() 
    {
        char* p1 = "Willis";
        char* p2 = "VCHelp";
        SendMessage(WM_CURRENTINFO, (WPARAM)p1, (LPARAM)p2 );
    }LRESULT CAaaDlg::OnCurrentInfo(WPARAM wParam, LPARAM lParam )
    {
        MessageBox((LPSTR)wParam,(LPSTR)lParam, 0 );
        return 0;

    --------------------------------------
    CString strPara = _T("fggg");
    ::SendMessage(hWnd,WM_XXXX,0,(LPARAM)(LPCTSTR)strPara);
    在消息处理函数里接收字符串
    OnMessageXXXX(WPARAM wParam,LPARAM lParam)
    {
    CString strddd = (LPCTSTR)lParam;
    }
      

  2.   

    1、WM_COPYDATA
    2、申请对方进程的空间,然后发送消息
    VirtualAlloc
      

  3.   

    首先我的数据很少,不需要 B->A
    能不能详细一点点啊?谢谢
      

  4.   

    进程间的通讯有许多方法,socket也是一种。只要将充当service端的机器地址定为"Localhost";让client端连接到"Localhost"+"Service Port",就可以在进程间产生一个通路,让它们进行数据传递。源代码太长,你可以在MSDN中查查CSocket类。
      

  5.   

    你的程序数据少的话,就直接用WM_COPYDATA吧,这个简单,而且也适用于较少的数据。
    你可以直接重载WM_COPYDATA消息就可以了。
      

  6.   

    同意上面得说法
    WM_COPYDATA
    The WM_COPYDATA message is sent when an application passes data to another application. WM_COPYDATA 
    wParam = (WPARAM) (HWND) hwnd;            // handle of sending window 
    lParam = (LPARAM) (PCOPYDATASTRUCT) pcds; // pointer to structure with data 重载WM_COPYDATA消息
      

  7.   

    另又一方法SendMessage  (hWnd,WM_TEXT,int值,lpString)然后接受进程中重载 WM_TEXT
    将第一个参数作为 int值,第二个参数为指针由于对于系统消息,若要传递指针,且两个进程不属同一进程事,
    OS会自动得将buffer复制到目的进程得地址空间,然后将新的指针给进程(改变lparam值)对于非系统消(自定义消息)没有上面得功能
      

  8.   

    字符串传递是可以的,请看这片文章http://www.vckbase.com/document/viewdoc/?id=1197
      

  9.   

    http://dev.csdn.net/develop/article/17/17570.shtm