Добрый день, проблема следующая: Необходимо отследить, пока приложение полностью загрузится. Для GUI приложений, работает отлично: Код (Text): CreateProcess(..); WaitForInputIdle( .. , INFINITE ); // приложение успешно загрузилось Но: А какой возможен вариант для консольных приложений \ приложений без очереди сообщений, помимо Sleep(3000) ? Заранее спасибо.
Clerk хороший вопрос, поясню. После запуска процесса, происходит переименование этого процесса. Если не подождать, то в списке процессов будет переименованный процесс, а я хочу имя старого.
После возврата из NtCreateProcess(Ex) он уже будет создан, другое когда юзермодный загрузчик открывает файл на диске.
Clerk ответ не понял, ещё поясню После запуска процесса, происходит переименование файла на диске, соответствующего процессу. Если не подождать, то в списке процессов будет имя, переименованного процесса (новое имя файла), а я хочу имя старого файла.
Clerk как это ждать не надо. CreateProcess("c\\console.exe"); Rename("c\\console.exe","c\\qconsole.exe", ..) taskmgr показывает qconsole а надо console Если добавить WaitForInputIdle( .. , INFINITE ); -- т.е. ожидание то проблема решается только для GUI программ, (taskmgr показывает console). Для консольных эта проблема не решена. можно использовать Sleep(), но есть ли методы грамотнее ?
могу сделать вывод что ты знаешь момент запуска -> что мешает посмотреть в параметрах CreateProcess? если не знаешь момент запуска тогда не понятен вопрос