C++调用system函数,如何不弹cmd.exe程序窗口

如题,我知道使用WinExec(szCmdLine, SW_HIDE)可以不显示窗口,但是winexec这个函数不会等待cmd命令执行结束,代码就会继续
而system会等待程序执行结束,但是会弹出cmd程序窗口,请问怎么办???
我认为需要用下面的方式处理
方法1:让winExec等待命令调用结束
方法2:system不显示cmd窗口
方法3:其他的好方法

求大神帮忙

命令行里, 用 start /B 开始。
例如, 原来要 跑程序 b.exe, 程序输出结果 显示在 屏幕上。我们 用 start /B 取消窗口,用 > x.txt 把屏幕 显示内容 转向到 文件 x.txt 里。调用:
system("start /B b.exe >> x.txt");
就可以了。
start 的 巧妙用法 见 帮助文件。 拍 start /? 阅读。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-04
用CreateProcess,有参数可以控制是否显示窗口

返回值是个窗口句柄HANDLE,可以用WaitForSingleObject来等待结束
用GetExitCodeProcess来判断返回值追问

我尝试将SW_HIDE改成SW_NORMAL,结果发现只是打开了cmd,并没有输入指令

追答

用命名管道(namedpipe)与cmd进行交互。
详情查询MSDN

追问

1、回答可以再详细点吗?
2、我将“ftp -i -s:ftptemp.txt"修改为“cmd \c ftp -i -s:ftptemp.txt"程序就好用了,请问这是为什么呢?

谢谢啦,会加分的恩

本回答被提问者和网友采纳
相似回答