两个应用APP1和APP2,要求都可以单独启动每个应用启动后需要传递自身的一些资料给另一个APP。如何利用管道来实现?

解决方案 »

  1.   

    没有人回答嘛?自己UP一下我是这么做的在APP1中建立管道
    HANDLE hSvr = 
    CreateNamedPipe("\\\\.\\pipe\\test_pipe",
    PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE,3,256,256,NMPWAIT_USE_DEFAULT_WAIT,NULL);然后创建文件
    HANDLE hFile = 
    CreateFile("\\\\.\\pipe\\test_pipe",
    GENERIC_WRITE |GENERIC_READ,0,NULL,
    OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);最后写入信息
    DWORD dwRead;
    BOOL b = WriteFile(hSvr,s,s.GetLength(),&dwRead,NULL);然后在APP2中如何能得到我写入的数据呢?
    我用WaitNamedPipe函数为什么连不上我这个管道?
    请大家指教,我这么使用管道不对嘛?
      

  2.   

    APP1中要用ConnectNamedPipe等待client来连(试试,我没用过pipe,刚看msdn上这么说的)
    // Wait for the client to connect; if it succeeds, 
          // the function returns a nonzero value. If the function returns 
          // zero, GetLastError returns ERROR_PIPE_CONNECTED. 
     
          fConnected = ConnectNamedPipe(hPipe, NULL) ? 
             TRUE : (GetLastError() == ERROR_PIPE_CONNECTED); 你看一下CreateNamedPipe自带的例子,是一个Server
    WaitNamedPipe自带的例子,是一个Client
      

  3.   

    什么是管道??
    楼上的意思是必须APP1CreateNamedPipe之后App2必须连接才算管道?这个时候APP1才能CreateFile往里面写吗?
      

  4.   

    应该是这样的,要不然App1往哪里写呢?