ShellExecute 返回成功但未创建文件

ShellExecute returning success but file is not created

我正在使用 ShellExecute WIN API 到 运行 DOS 命令,因为当我 运行 应用程序时可以看到 DOS 命令闪烁。下面是 ShellExecute API 调用。

ret = ShellExecute(0, "open", "cmd.exe", "/C ver > version.txt", 0, SW_HIDE);

在此之后,我尝试使用 fopen 函数打开 version.txt,但它返回 NULL。

感谢任何帮助。

ShellExecute() 异步运行指定进程。 fopen() 失败的原因几乎可以肯定是 cmd 进程没有足够的时间来实际创建文件。

有几种方法可以解决这个问题。对于您的情况,最好的方法可能是使用 ShellExecuteEx() 来检索 hProcess 中的进程句柄,这将允许您在恢复代码之前等待其终止。参见 How to wait for ShellExecute to run?