在windows下,可以使用映射文件进行数据共享,但如果在windows两个不同的用户之间的两个进程,如何实现共享呢? 试过使用Global\\但并不能达到目的啊。
同样,Event在Global的情况下,在不同用户下,不能openevent求教。

解决方案 »

  1.   

    这两天正在读《Windows via C/C++》,正好看到了进程相关的知识,希望能对你有所帮助首先:进程包含两个部分:一个是进程的内核对象,这个是由Windows API创建的;另一个是地址空间,不同进程的地址空间是相对独立而无法访问的。因此你这里所说的Global,不知是不是全局变量,如果是全局变量的意思,那是肯定无法访问。至于其它含义我还不清楚;其次:Event是可以进行进程间通信的,你可以将一个Event进行命名,然后在另外的进程内通过指定的名称来打开该Event,代码样例可参照如下:A进程中
    //声明了Event的Handle
    volatile HANDLE gBackGroundEventA;
    //创建了一个命名的Event,注意,需要对此Event指定安全属性
    gBackGroundEventA=CreateEvent(NULL, FALSE, FALSE, _T("BackGroundEvent")); if (NULL == gBackGroundEventA)
    {
       RETAILMSG(1,(TEXT("CreateEvent gBackGroundEventA Fail \r\n")));
    }
    SetEvent(gBackGroundEventA); //加在需要的地方B进程中
    volatile HANDLE gBackGroundEventB;
    gBackGroundEventB=OpenEvent(NULL, FALSE, FALSE, _T("BackGroundEvent")); 
    WaitForSingleObject(gBackGroundEventB,INFINITE); //加在需要的地方两个进程之间的同步就是通过Event的名字"BackGroundEvent"做到的
    附注 windows进程间通信方式http://hi.baidu.com/sinbh/blog/item/a3d386d145bec23f9b5027a9.html
      

  2.   

    A进程使用CreateFileMapping创建内存映射文件,MapViewOfFiles
    B进程OpenFileMapping,MapViewOfFiles
    详细内的见 windows 核心编程
    下面简单的例子
    http://fireflyliu.blog.51cto.com/669730/131915
      

  3.   

    不行,windows是单用户多任务OS
      

  4.   

    research this article, you will find all of what you wanthttp://www.codeproject.com/KB/threads/Win32IPC.aspx