ShellExecute(NULL,_T("OPEN"),_T("C:\\myexe.exe"),_T("1,1"),NULL,SW_HIDE);
如果myexe执行的是一个加法运算,结果是2,怎么在MFC里获取到控制台窗口的这个输出信息?
还有异常信息用GetLastError()获取后需要杀进程吗?

解决方案 »

  1.   

    ShellExecute只是执行一个新的进程,它不能得到控制台输出信息的。可以使用其它的方式来获得:进程通信。
    关于进程通信的方法有很多,下面是其中一个:共享内存方式
    进程间通信_共享内存类_C++实现
      

  2.   

    最简单的方法, 重定向 myexe.exe 的输出
    ShellExecute(NULL,_T("OPEN"),_T("C:\\myexe.exe > c:\\tmp.txt"),_T("1,1"),NULL,SW_HIDE); 然后读c:\\tmp.txt
      

  3.   

    通过cmd.exe等控制台方式执行myexe,然后通过管道重定向,GetStdHandle等来获得返回的数据
      

  4.   

    匿名管道。CreateProcess,CreatePipe
      

  5.   

    用管道。我这边有写好可编译运行的实例给你参考,你自己去下载
    http://www.brsbox.com/filebox/down/fc/02d018c57f55384bd69683ea0220da25