A.exe 发送消息到 B.exe 应该怎么样实现,具体的实现方法是什么,希望能给出源码.在线等待,谢谢大家.

解决方案 »

  1.   

    多着呢,可以用SOCKET,可以用内核对象,可以注册消息,可以用文件。
    太多了。
    最简单的用注册消息。。
    你查下RegisterWindowMessage,这个API函数
    2个程序都用这个API注册同一个字符串,它会返回一个唯一的消息ID,直接用这个消息ID,就像自定义消息一样使用就可以了。。
      

  2.   

    方式1:发送窗口消息(如果进程有窗口的话)方式2:命名管道方式3:共享内存方式4:socket通信方式5:……
      

  3.   

    通过发送WM_COPYDATA消息来传输只读数据 //要发送的原始数据
    CString str;
    str.Format(_T("利用消息发送数据:1A"));    //转换成COPYDATASTRUCT结构
    COPYDATASTRUCT m_copyDATA;            //COPYDATA结构
        m_copyDATA.cbData = str.GetLength();  //str.GetLength()的值是16
        m_copyDATA.lpData = str.GetBuffer(0); //取指针 //发送消息
    CWnd *pWndPrev;
    if (pWndPrev = CWnd::FindWindow(NULL, _T("VC受控方")))  //根据窗口名查找句柄
        {
            ::SendMessage(pWndPrev->m_hWnd, WM_COPYDATA, NULL, (LPARAM)&m_copyDATA);
        }接收数据一方在OnCopyData中的代码: /*
    如果是在系统消息中拦截,应该这样转换数据
    COPYDATASTRUCT *pCopyDataStruct = NULL ;
        pCopyDataStruct = (COPYDATASTRUCT*)lParam;  
    */    CString strTemp;
        memcpy(strTemp.GetBuffer(pCopyDataStruct->cbData+1), 
       pCopyDataStruct->lpData, 
       pCopyDataStruct->cbData);
        m_edit1.SetWindowText(strTemp);     //将收到的字符串显示在文本框中 return CDialog::OnCopyData(pWnd, pCopyDataStruct);
      

  4.   

    我创建了两个工程,分别是两个对话框,一个是SendmsgDlg,一个是RecvmsgDlg,现在要将SendmsgDlg 中的数据PostMessage到
    RecvmsgDlg中,如果用WM_COPYDATA的方法的话,是不是就可以不用声明消息了,直接在SendmsgDlg和RecvmsgDlg中输入dlyme(丈夫三十功未立) 的以上代码就可以了吗?如果是的话 ,在编译的时候系统提示 m_edit1 变量未定义,那么 m_edit1 应该定义成谁的成员变量呢?
      

  5.   

    m_edit1在原来的代码里是个静态文本框,不用理它,屏蔽就可以。
      

  6.   

    编译通过,但是程序没响应,dlyme (丈夫三十功未立)你能把你的整个工程发给我看看吗?感激不尽!
      

  7.   

    if (pWndPrev = CWnd::FindWindow(NULL, _T("VC受控方")))  //根据窗口名查找句柄
    没有响应是由于窗体名称不是这个"VC受控方"吧。源码已经发给你了,里面还有进程间通信其它方式的实现。  
      

  8.   

    我也需要一个看看 
    dlyme   (丈夫三十功未立)你能把你的整个工程发给我看看吗?