ShellExecute返回成功但未创建文件

时间:2015-03-10 11:40:22

标签: c windows msdn

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

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

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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

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