我正在使用ShellExecuteEx
命令在C语言中执行一个命令。有没有一种方法可以同时使用ShellExecuteEx
并捕获标准输入/输出/错误输出?
注意:我不想使用CreateProcess
命令。
我曾经遇到了和你类似的问题。
假设你想要捕获由dir命令生成的标准输出(STDOUT),并将其保存到out.txt中。
使用文本编辑器,输入dir > out.txt并将其保存为mybat.bat(*.bat,不是*.txt)
在你的C/C++程序中,输入WinExec("mybat.bat", SW_HIDE);并运行你的应用程序。
打开out.txt,你会看到当前目录下的文件夹和文件名。
同时,你还可以按照如下方式运行任何可执行文件(*.exe)。
xxx.exe > out.txt
希望这对你有所帮助。
抱歉,我的英语真的不好。
这是不可能的。 ShellExecute
(Ex
) 基本上在 shell 的上下文中执行应用程序 - 所以你基本上正在做 explorer 所做的事情。
捕获 STDIN 和 STDOUT 是 shell 通常不会做的事情,所以你必须走 CreateProcess
的路线(毕竟,如果要执行的文件是程序且动词是“打开”,那么 ShellExecute
最终调用的就是它)。
CreateProcess
。kGUICallThread
)处理Linux、macOS和Windows版本。该代码的许可证为LGPL。CreateProcess是大多数人使用的。
您可能还需要考虑使用_popen。
http://msdn.microsoft.com/en-us/library/96ayss4b%28VS.80%29.aspx