跟SendMessage()一样.
但是我是想把一个结构体从一个程序发送到另一个程序.
比如:
struct S_Data
{
  ...
};
S_Data stA;要把"stA"从sender.exe发送到receiver.exe
怎样实现?

解决方案 »

  1.   

    内存影像文件或者信号量或者共享内存能进行两个exe之间的通讯
      

  2.   

    1、用SendMessage发送WM_COPYDATA消息
    2、内存映射文件,使用CreateFileMapping等函数来完成
    3、命名管道
    4、socket通信上面四中方法都可以实现楼主的要求!
      

  3.   

    楼上的已经全说了,最简单的估计就是WM_COPYDATA消息了
      

  4.   

    谢谢大家.
    WM_COPYDATA可以用于PostMessage吧?
      

  5.   

    功能最强的就是 socket 通讯了,它可以跨越机器。
      

  6.   

    http://www.vchome.net/tech/multithread/thread3.htm
      

  7.   

    怪了,为什么我WM_COPYDATA所接收到的数据不是我发更送的呢?
    // 在2.exe中发送数据
    void CMy2Dlg::OnBnClickedOk()
    {
    HWND hWnd = ::FindWindow( NULL, "1" );
    if ( hWnd )
    {
    S_Data stData;
    stData.n = 874;
    strcpy( stData.sz, "witsun" );
    COPYDATASTRUCT data;
    data.dwData = sizeof(stData);
    data.cbData = 1;
    data.lpData = &stData;
    ::SendMessage( hWnd, WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&data );
    int n = 0;
    }
    }// 1.exe中的pData是错误的
    BOOL CMy1Dlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
    {
    S_Data* pData = (S_Data*)pCopyDataStruct->lpData; return CDialog::OnCopyData(pWnd, pCopyDataStruct);
    }
      

  8.   

    struct S_Data
    {
    int n;
    char sz[123];
    };