2015-03-10 5 views
0

Iam с использованием ShellExecute WIN API для запуска команды DOS, поскольку вспышки команды DOS видны, когда я запускаю приложение. Ниже приведен вызов API ShellExecute.ShellExecute возвращает успех, но файл не создан

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

После этого я попытался открыть файл version.txt с помощью функции fopen, но он возвращает NULL.

Любая помощь приветствуется.

+0

Пожалуйста, закройте свой вопрос, нажав галочку слева от ответа, который вам больше всего помог. – bgoldst

ответ

2

ShellExecute() запускает указанный процесс асинхронно. Причина, по которой fopen() терпит неудачу, почти наверняка заключается в том, что процесс cmd не успел создать файл.

Существует несколько способов решить эту проблему. Вероятно, лучшим для вашего случая является использование ShellExecuteEx() для извлечения дескриптора процесса в hProcess, что позволит вам дождаться его завершения до возобновления вашего кода. См. How to wait for ShellExecute to run?.

+0

Спасибо, это сработало для меня. – mujtaba

 Смежные вопросы

  • Нет связанных вопросов^_^