请教怎么取得console程序的返回结果又不弹出DOS黑窗口

请问如何取得console程序的返回结果又不弹出DOS黑窗口?
我要上传一个文件到服务器,

如果使用system调用可以取得返回结果但弹出DOS黑窗口:
        int   ret   =   system( "tftp   -i   192.168.1.40   put   AAA ");
        文件上传成功   ret值为0,失败(如文件不存在)返回非0。

如果使用ShellExecute/ShellExecuteEx,不弹出DOS窗口,但无论是否成功上传文件,总是返回成功

怎样才能既不弹出DOS黑窗口,又能取得程序执行结果呢?


------解决方案--------------------
CreateProcess STARTUPINFO 中指定si.wShowWindow = SW_HIDE
用管道获得exe的输出结果
------解决方案--------------------

DOS有现成的管道 |, 推荐使用 重定向 >

CreateProcess STARTUPINFO 中指定si.wShowWindow = SW_HIDE 可以隐藏运行

DOS的 > 可以从定向输出
比如:
dir c: > c:\1.txt
可以取得dir命令的结果到文件c:\1.txt
------解决方案--------------------
CreateProcess
STARTINFO
------解决方案--------------------
用这个GetExitCodeProcess函数获取程序退出值
------解决方案--------------------
http://community.****.net/Expert/topic/5429/5429008.xml?temp=.6505701

这有一篇我发帖的帖子,有跟你问题重叠的部分,后面有比较合适的答案,可以参考一下