Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

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

 
ezorcist   (2006-12-23 22:12) [0]

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

begin

...

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

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


 
palva ©   (2006-12-23 22:25) [1]

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


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

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


 
Anatoly Podgoretsky ©   (2006-12-23 22:40) [3]

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

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


 
palva ©   (2006-12-23 22:47) [4]

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

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


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

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

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


 
Virgo_Style ©   (2006-12-24 11:21) [6]

WM_QUERYENDSESSION / WM_ENDSESSION ?


 
palva ©   (2006-12-24 12:06) [7]

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


 
palva ©   (2006-12-24 12:08) [8]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
2-1166686128
Sergey__
2006-12-21 10:28
2007.01.14
Различное поведение НД при вставке и редактировании.


9-1142076235
Yeg
2006-03-11 14:23
2007.01.14
Дополнительный форматы файлов


6-1155734845
VolanD666
2006-08-16 17:27
2007.01.14
Asynchronous socket error 10061


15-1166688449
Slider007
2006-12-21 11:07
2007.01.14
С днем рождения ! 21 декабря


8-1148479532
Костя_909
2006-05-24 18:05
2007.01.14
В строке buf[0]:= virtualalloc(... Delphi пишет Operator not appl