Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2009, 15:37   #1
only
Новичок
Джуниор
 
Регистрация: 13.03.2009
Сообщений: 1
Вопрос ShellExecute помогите

Здравствуйте. Помогите пож-ста.
ShellExecute вызывает start.bat, который работает достаточно долго (от 1-3сек - до ...). Как узнать, что exeшник закрылся, чтобы прочитать файл .txt, который получается в результате работы этого exeшника???

А то у меня получается exeшник еще не закрылся, а программа лезет читать .txt, которого еще нету((

ShellExecute(NULL,"open","C:\\start .exe", NULL, SW_SHOWNORMAL);
ReadFile("... .txt");

Сделать Sleep(1000); (ну или другое число) не катит, вдруг долго, или не хватит.

ПыЗы: надеюсь понятна моя проблема.
only вне форума Ответить с цитированием
Старый 13.03.2009, 15:44   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

ну либо используй Sleep(5000) - твоя прога будет ждать 5 секунд.
либо используй функцию для запуска процесса CreateProcess, получишь дескриптор созданного процесса, и с помощью функции WaitForSingleObject ожидаешь, пока процесс завершится.
vvviperrr вне форума Ответить с цитированием
Старый 13.03.2009, 16:05   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Есть еще вариант мониторить процессы через модуль ToolHelp32 в таймере. Если процесс незапущен то мона считывать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.03.2009, 16:06   #4
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Stilet ну это совсем изврат) еще есть вариант постоянно запускать CreateFile, и ждать, пока он вернет НЕ ошибку, но это тоже не тру

пс. тем более, при запуске бата процесс будет ntldr (или cmd). так то полюбому не катит)
vvviperrr вне форума Ответить с цитированием
Старый 13.03.2009, 16:26   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
vvviperrr
Дружище, автор написал:
Цитата:
Как узнать, что exeшник закрылся, чтобы прочитать файл .txt, который получается в результате работы этого exeшника???
Так что пусть обьясняет подробнее.
НАсчет изврата - в безвыходной ситуации все средства хороши, если они дают результат с оптимальным процессом
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.03.2009, 15:24   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

еще вариант запустить цикл, ограничив его максимальным кол-вом повторений, а в цикле делать проверку FileExists()
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
shellExecute GAGARIN-NEW Общие вопросы Delphi 3 18.10.2008 12:04
ShellExecute Zeraim Общие вопросы Delphi 1 07.05.2008 17:02
ShellExecute SNUPY Общие вопросы Delphi 4 19.02.2008 22:59
ShellExecute Volkogriz Общие вопросы Delphi 4 31.10.2007 13:33
ShellExecute doncova1 БД в Delphi 4 29.11.2006 18:20