当您只想运行像hg > test.txt
之类的简单shell命令时,最好使用的WinAPI函数是什么?
答案 0 :(得分:7)
要简单地运行文件,ShellExecute()
和CreateProcess()
是最佳选择。
由于您希望将输出重定向到文件/运行shell命令,因此会使事情变得复杂......
输出重定向是命令提示符的一个功能,因此,您要运行的命令需要传递给cmd.exe
(在NT / XP +上)并传递/c
并将您的命令作为参数(ShellExecute
或CreateProcess
都可以)。
cmd /c "ipconfig >c:\debug\blah.txt"
然而,最好的方法是使用CreateProcess()
并创建自己的管道来与程序的stdin和stdout交谈(这是cmd
内部的所有内容)
答案 1 :(得分:2)
您可以使用ShellExecute()
,但为什么不首先尝试system()
?我不确定ShellExecute()
是否可以实际进行管道或重定向。还有CreateProcess()
,但这需要更多的工作。 CreateProcess()
为您提供了最佳控制权。
答案 2 :(得分:1)
有两种发出命令的方法:Windows Shell方式和命令行方式。
Windows Shell通过对文件执行动词来发出命令。动词与注册表中的文件类型相关联。常见动词的示例是打开和打印。用于此目的的WinAPI是ShellExecute。 Windows Shell无法帮助您将进程的输出传递给文件。您可以使用CreateProcess执行此操作,但它是a little bit involved。
命令行方式是使用system函数。