Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как попросить консоль закрыть за собой окно?  (Прочитано 12675 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 19-02-2004 09:11 » 

Суть проблемы: из програмы по средством Shell(CreateProcess)
стартуется пакетный файл (run.bat) и програма останавливается
до его завершения ....
Но эта зараза не хочет завершаться .... те отрабатывает свое и повисает окно с надписью "Сеанс завершон" как поросить систему закрыть окно после выполнения ?
 >exit
 не прокатывает.

Более того если стартовать не пакетный файл а просто консольный ехе то окно закрывается автоматически  тоже самое если запустить bat двойным кликом из ехплорера.

Что можно придумать?
Записан

Да да нет нет все остальное от лукавого.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 19-02-2004 17:04 » 

PSD,  попробуй - под w2k закрылось:

   STARTUPINFO si;
   PROCESS_INFORMATION pi;
   ZeroMemory(&si, sizeof(si));
   si.cb = sizeof(si);
   ZeroMemory(&pi, sizeof(pi));

   BOOL bRes = ::CreateProcess(NULL, "d:\\run.bat", NULL, NULL,
                        FALSE, 0, NULL, NULL, &si, &pi);

   ::WaitForSingleObject(pi.hProcess, INFINITE);

в run.bat стоит только dir *.* Может у тебя условия другие?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 20-02-2004 08:01 » new

Я так и стартую только из вейсика .......
Ладно сейчас поробую таоже самое в С сделать и сравнить .... может это беда не кода а настроки ситемы....
Записан

Да да нет нет все остальное от лукавого.
Dobro
Гость
« Ответ #3 : 24-02-2004 21:29 » 

Для bat-файлов или DOS-приложений в диалоге "Свойства" можно отрулить параметр "Закрывать окно по завершении работы". Если настройки свойств отличаются от заданных по умолчанию, то они сохраняются в pif-файле с аналогичным именем в том же каталоге.
Для того, чтобы не зависеть от настройки запускаемых приложений можно сначала создать консоль в своем процессе (если это GUI-приложение, а не консольное) AllocConsole, а затем запустить консольное приложение в своей консоли. Для этого необходимо, чтобы при вызове CreateProcess в параметре CreateProcess был сброшен флаг CREATE_NEW_CONSOLE.
После того, как процесс отработает нужно освободить консоль при помощи FreeConsole.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 25-02-2004 05:41 » 

А как выловить момоент окончания работы консольного приложения ?

В первом приблежении хендел к консоли цепляется и пока она жива Wait будет ждать завершения.
Записан

Да да нет нет все остальное от лукавого.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines