如果两个进程没有约定的话,那么Win32不允许去直接更改其他进程的变量。
如果两个程序可以事先约定的话,就比较容易了
发送消息是主要的方法当然具体还牵涉其它一些通信技术,可来信探讨别太当真,我也是菜鸟

解决方案 »

  1.   

    我朋友的一段代碼
    我在发送方强行在接收方分配内存,然后写入数据,再把指针大小用消息发过去
    oid CReadBmpDlg::OnButton1() 
    {
     // TODO: Add your control notification handler code here
     HWND hw = ::FindWindow(NULL,_T("Accept"));
     if(::IsWindow(hw))
     {
      DWORD dwPid;
      ::GetWindowThreadProcessId(hw,&dwPid);
      HANDLE hP = ::OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION,false,dwPid);
      if(hP)
      {   PVOID pvMem = ::VirtualAllocEx(hP,NULL,100,MEM_RESERVE|MEM_COMMIT , PAGE_READWRITE);
       if(pvMem)
       {
        if(!::WriteProcessMemory (hP,pvMem,"hello hml",10,NULL))
        {
         ASSERT(0);
        }
        ::CloseHandle(hP);
        ::PostMessage (hw,MS,(WPARAM)pvMem,100);
       }
       
      }
     
     }
    }
    接收方只要释放内存就可以了
    LRESULT CAcceptMessageDlg::OnMESSAGE_DATA(WPARAM wParam, LPARAM lParam)
    {
     PVOID hg = (PVOID)wParam;
     char * p =(char *)hg;
     m_s = p;
     BOOL b;
     VERIFY(b = ::VirtualFreeEx (::GetCurrentProcess(),hg,0,MEM_RELEASE));
     UpdateData(false);
     return NULL;
    }
     
      

  2.   

    re: xielm是个好方法,我原来也为这个问题发过愁,后来改了用map file的方式.这个方式更简单。可惜我不就给你加分。
      

  3.   

    请问nitrogen,可否详细说说如何用共享内存的方法来做?