如何截取控制台程序的输出?

解决方案 »

  1.   

    怎么没人啊?
    我想吧我调用的DOS 程序输出截取下来,有什么办法?不要告诉我输出到文件啊。
      

  2.   

    去看看msdn中consoles[win32]中的console screen buffers 以及console functions 部分。
    你可以把console程序的输出用SetStdHandle()重定向到另一个Handle中去
      

  3.   

    http://codeguru.earthweb.com/misc/redirect.shtml
    You can specify a console for console application so that it doesn't create a new console as it runs. Related API:AllocConsole, CreateProcess.
    Or you can redirect their output to somewhere else in order to solve your problem. Hope the following links are useful to you.
    http://codeguru.earthweb.com/console/QuickWin.shtml
      

  4.   

    http://vip.6to23.com/NowCan1/tech/pipe.htm
    看这个绝对满足要求。
      

  5.   

    谢谢朋友们的帮助,目前我采用PIPE基本上是达到目的了,我的目的是把控制台程序的输出在窗口程序中截取,但不想显示控制台界面,我得专门写一个执行CreateProcess并通过PiPE发送的程序,有没有更简单的方法?
      

  6.   

    SetStdHandle必须要AllocConsole一个控制台界面,着是我不想要的
      

  7.   

    我刚按  NowCan(能量、激情、雨水、彩虹——雷雨  提供的网站改了一下好像有点问题:
        我用CreatePipe创建了hReadPipe, hWritePipe,然后传入CreateProcess创建的进程,好像不能接收到啊。
        有没有人用过?
      

  8.   

    把你的两个CreatePipe写在这里,我怀疑你有一个写反了。
      

  9.   

    两个进程间通信是没问题的,不过这样的话我要单独写一个Console程序用来运行其它的程序,并完成发送到主程序的任务,我按MSDN中的方法,用CreatePipe后,把创建的两个HANDLE作为STARTUP_INFO结构的hStdout和hStdin参数,并设置了dwFlag,却不能够正确接收,程序运行表明设置的参数是起作用的,但ReadFile的结果是读出了乱码。
      

  10.   

    masterz(MS MVP)  的贴子已经解决问题了,开始没仔细看,:NowCan(能量、激情、雨水、彩虹——雷雨云) 的贴子原理也一样,谢谢了,我在这里发了200分,你们两个各分80吧,masterz(MS MVP)  请到另一个贴子领分,为防版主认为有作弊嫌疑,请把你这里的回复Copy到那边去。
      

  11.   

    masterz(MS MVP)  :另一个贴子是:http://expert.csdn.net/Expert/topic/1376/1376284.xml?temp=.4842798你把这里的贴子Copy过去我就可以把这两个贴子结贴了