我使用ShellExecute WIN API运行DOS命令,因为当我运行应用程序时,DOS命令会闪烁。下面是ShellExecute API调用。
ret=ShellExecute(0,“打开”,“cmd.exe”,“/C ver>version.txt”,0,SW_HIDE);
之后,我试图使用fopen函数打开version.txt,但它返回了空值。
如有任何帮助,我们将不胜感激。
最佳答案
ShellExecute()
异步运行指定进程。fopen()
失败的原因几乎可以肯定是cmd
进程没有足够的时间实际创建文件。
有两种方法可以解决这个问题。对于您的案例,最好的方法可能是使用ShellExecuteEx()
来检索hProcess
中的进程句柄,这将允许您在恢复代码之前等待其终止。见How to wait for ShellExecute to run?。