Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

завершение консольног приложения


ezorcist ©   (2006-12-23 22:12:00) 

есть консольное приложение типа

begin

...

//стандартный пример
While GetMessage(msg,0,0,0) Do
Begin
   Translatemessage(msg);
   dispatchmessage(msg);
End;
End.

Как отреагировать (выполнить собственную процедуру OnClose) на его закрытие?


ezorcist   (2006-12-24 13:22:00) [1]

по ходу не приходит..... просто хотелось сэкономить на Forms :(


palva   (2006-12-24 12:08:00) [2]

А может и посылает, если зарегистрирован класс окна, но это надо пробовать. Или читать. Или спросить у ИШ.


palva   (2006-12-24 12:06:00) [3]

ezorcist   (23.12.06 23:09) [5]
Проверить можно так
if msg.message = WM_QUIT (или = 18)
Но беда в том, что система не посылает консольному приложению сообщений при выключении. Скорее всего она посылает ему на stdin комбинацию Ctrl-C.
Наверно можно попробовать вместо консольного приложения сделать оконное приложение с невидимым окном, а уже в нем создать консоль. У такого приложения будет стандартный цикл обработки сообщений и оконная функция, из которой можно организовать выход на OnClose.


Virgo_Style   (2006-12-24 11:21:00) [4]

WM_QUERYENDSESSION / WM_ENDSESSION ?


ezorcist   (2006-12-23 23:09:00) [5]

надо вызвать OnClose когда программа будет завершена при выключении ПК.

[3] можно пример как проверить ? if msg = WM_QUIT then явно не подойдет :/


palva   (2006-12-23 22:47:00) [6]

> вставил, но при закрытии туда не приходит.... ?

Ну значит программу никто и не пытается закрыть. Или вы пытаетесь написать реакцию на снятие из списка процессов?


Anatoly Podgoretsky   (2006-12-23 22:40:00) [7]

> ezorcist  (23.12.2006 22:35:02)  [2]

Программа закончится, когда в очередь сообщений поступит сообщение WM_QUIT


ezorcist   (2006-12-23 22:35:00) [8]

вставил, но при закрытии туда не приходит.... ?


palva   (2006-12-23 22:25:00) [9]

Между двумя последними end вставить код обработки попытки закрытия, а потом, если нужно продолжить, сделать goto на метку перед циклом.


Наверх

Титульная страница Поиск, карта сайта Написать письмо