【问题标题】:ShellExecute returning success but file is not createdShellExecute 返回成功但未创建文件
【发布时间】:2015-03-10 11:40:22
【问题描述】:

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

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

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

感谢任何帮助。

【问题讨论】:

  • 请点击对您最有帮助的答案左侧的复选标记来关闭您的问题。

标签: c windows msdn


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-07-03
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多