![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отловить завершение винды [Win95/98]
Miker © (2002-10-23 23:57:00)У меня безформенное приложение. И поэтому делаю следующее, чтобы она выполнялась:
program MyProg;
uses ....;
-----
Мои действия...
------
repeat
PeekMessage(Msg,0,0,0,pm_noremove);
case Msg.message of
WM_CLOSE:break;
WM_QueryEndSession:break;
WM_QUIT:Close;
end;
// Application.ProcessMessages;
// sleep(50);
until false;
----------
мои действия, которые я хочу выполнить.
Дак вот, при завершении виндовсов, операторы после until falseне выполняются, т.е. программа закрывается виндой насильно (если правильно выражаюсь). Нужно это исправить.
Miker (2002-10-25 22:47:00) [1]To Song:
Я понимаю, что конкретного ответа давать не хочешь (и, вроде, правильно), но для меня твоей информации недостаточно для решения моей проблемы (знаю, что ответ должен быть=0, а как собственно ответить?). Подскажи, пожалуйста, конкретней.
linage (2002-10-25 00:52:00) [2]необходимо написать обработчик сообщения и посадить его на WM_QUERYENDSESSION.
procedure WMExitWindows(var Message: TMessage); message WM_QUERYENDSESSION;
procedure WMExitWindows(var Message: TMessage);
begin
Message.Result:=0;
end;
Miker (2002-10-25 00:38:00) [3]А как его вернуть? Чего-нибудь наподобии Result:=0 у TMsg нет. (прошу прощения за неграмотность).
Song (2002-10-24 09:48:00) [4]На WM_QUERYENDSESSION вернуть отрицательный результат. Какой - смотрите в хэлпе по SDK.