代码之家  ›  专栏  ›  技术社区  ›  mujtaba

ShellExecute返回成功,但未创建文件

  •  0
  • mujtaba  · 技术社区  · 9 年前

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

    ret=ShellExecute(0,“打开”,“cmd.exe”,“/C ver>版本.txt”,0,SW_HIDE);

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

    感谢任何帮助。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Community Paul Sweatte    7 年前

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

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