我使用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?

10-05 21:09
查看更多