![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
завершение консольног приложения
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 на метку перед циклом.