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