在我的对话框程序test.exe调用控制台程序a.exe;
如何知道a.exe什么时候运行结束,还有它的运行结果?

解决方案 »

  1.   

    在论坛上看过有大侠说用重定向pipe实现,我不知道怎么用pipe实现,知道的指点下额~~
    最好写出代码.
      

  2.   

    CreateProcess函数可以控制进程的运行,具体理论知识可以查看msdn文档。
    大概的代码如下:DWORD m_code;
    PROCESS_INFORMATION pinfo;
    STARTUPINFO si={sizeof(si)};
    char buf[255];
    ::GetWindowDirectory(buf,255);
    strcat(buf,"\\你当前目录下的程序名称");
    BOOL result=::CreateProcess(NULL,buf,NULL,NULL,FALSE,0,NULL,NULL,&si,&pinfo);
    if(result)
    {
    CloseHandle(pinfo.hThread);
    WaitForSingleObject(pinfo.hProcess,INFINITE);
    GetExitCodeProcess(pinfo.pProcess,&exitcode);
    CloseHandle(pinfo.hProcess);
    }
    至于进程间数据的传递问题,在数据结构不太复杂,业务不够复杂和频繁的情况下,不推荐用命名管道来实现。
    可以试试使用Windows剪切板,共享缓存,或者串口通信方法,更广泛来说,用共享dll文件或共享普通文件的办法都可以实现一般要求下的进程间数据共享问题。