如果控制台要下运行的程序很快就执行完成,那么使用匿名管道,捕获输出很容易。
但是如果控制台程序一直在监听,每有一个连接的时候就会有一部分输出到console里,我想将这些输出全部显示到GUI程序的Edit里面去。请高手指点~~~~~~
给出解决方案,分不够可以再加~~~~~

解决方案 »

  1.   

    1. 首先register一个窗口类
    2. 然后CreateWindow
    3. 创建EDIT
    4. 将printf替换到 Edit->SetWindowText??是不是这个意思?
      

  2.   

    我的意思是MFC写的一个界面程序,去调用控制台写的一个exe程序,然后控制台的程序输出到GUI程序的Edit里而这里控制台程序是一个监听程序,所以使用匿名管道不方便做到 输出到GUI程序中。因为匿名管道是在控制台程序执行完成以后,才经输出写入到管道,然后GUI程序从管道中去取数据,监听程序是一个无限循环,所以不存在运行完成这个说法!但是有像实现这样的功能。怎么做。
      

  3.   

    试下这个方法:用CreateProcess()创建控制台程序的exe,在参数LPSTARTUPINFO lpStartupInfo里把exe的输出重定向到一个文件句柄,然后用FindFirstChangeNotification()等监听文件的变化,每次监听到变化则从记录的文件偏移处读取数据写到GUI里。
      

  4.   

    http://support.microsoft.com/kb/190351
    How to spawn console processes with redirected standard handles
    可以用管道重定向console的输出,哪怕这个程序不是立刻推出。你需要在console程序中把标准输出的cache设为0
      

  5.   

    原来msdn上的文章有bug,不知道后来改过没有。
    http://fruitfruit.blogspot.com/2006_06_01_archive.html
     a VC++ Class to redirect console output to a file