GetStdHandle (STD_OUTPUT_HANDLE)
保存
SetStdHandle(STD_OUTPUT_HANDLE,yourHandle) //yourHandle 可以是文件,管道,Socket...
//CreateProcess 运行程序,让子程序继承本进程的Handle
SetStdHandle(..)
//结束后恢复原STD_OUTPUT_HANDLE
保存
SetStdHandle(STD_OUTPUT_HANDLE,yourHandle) //yourHandle 可以是文件,管道,Socket...
//CreateProcess 运行程序,让子程序继承本进程的Handle
SetStdHandle(..)
//结束后恢复原STD_OUTPUT_HANDLE
a.exe > b.txt 写
a.exe >> b.txt 追加
STD_OUTPUT_HANDLE被定义成文件等句柄,所以子进程往console里输出的
东西也是进入了那些句柄对应的地方。如果你没有看懂,就不要抱怨“没有英雄”
自力更生总是必要的。
另外,不要因为我说没有英雄是因为没有看懂你的“高见”,我如果连你的那几下都没有试过,也不可能来提问;我在CSDN提过三次问题,最后均是我自己解决,所以才有自力更生之说,兄弟,别见怪;根据我现在的研究,你所提供的思路,还不能完全解决问题;恕我直言,你可不是什么“英雄”,但你至少摸到火门,所以决定给你1分。
关于这个解决方法,MSDN-Platform SDK-Base Services-Process and Threads中有一节叫做"Creating a Child Process with Redirected Input and Output",想必你也是研读过了.其实,如果父、子进程是我一人写的什么问题都没有了。
刚才说话多有得罪,见谅!真诚希望能和你多交流!
我用这种方法试过很多console程序,包括系统ping,net,其他Delphi程序,
vj的简单console程序,都没有问题,我自己写的console程序也没有显式调用set/get
stdHandle函数,可以成功。因为他们的console输出本来就是用的系统STD_OUTPUT_HANDLE
接口。可能你的情况比较复杂。爱莫能助了,希望你能够早点解决。:)