![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Tray+Reboot [D5, Win95/98, Win2k]
BJValentine © (2003-05-28 10:52:00)Завершаю работу на компе, а в трее у меня висит прога. Как можно сделать, чтобы прога закрылась когда пользователь решит выключить или перезагрузить комп?
BJValentine (2003-05-30 15:21:00) [1]Спасибо, заработало
Alex Konshin (2003-05-30 04:50:00) [2]Ведь отвечал уже на этот вопрос, но не могу найти в поиске по сайту.
Суть в том, что надо завести булевскую переменную, которая контролирует спрашивать/не спрашивать и еще в правильной обработке WM_QUERYENDSESSION:
procedure TfmServerToolBar.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
Init;
FQuietClose := True;
Message.Result := Integer(CallTerminateProcs);
Application.Terminate;
end;
Song (2003-05-29 22:27:00) [3]True - это 1.
Если непонятно, то можно было так проверить - Integer(True)
BJValentine (2003-05-29 18:19:00) [4]Там пишется, что нужно вернуть true, но delphi на это ругается.
Song (2003-05-29 17:45:00) [5]Почитай хэлп, там ясно всё написано.
BJValentine (2003-05-29 16:01:00) [6]А какой именно код?
Song (2003-05-29 15:56:00) [7]Не хватает вернуть правильный код на то сообщение что я написал.
BJValentine (2003-05-29 15:36:00) [8]А в W2k не спабатывает.
У меня получилось, программа закрывается, только вот система не завершает работу. Видать чего-то не хватает. А чего именно?
Sceleton (2003-05-29 15:24:00) [9]Я обычно делаю просто, в обработчике события FormCloseQuery основной формы пишу примерно так:
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
Begin
... операции, которые необходимо сделать перед закрытем программы...
Application.Terminate;
End;
У меня по крайней мере это срабатывает. Проверял в 98 и XP.
ppcat (2003-05-29 09:34:00) [10]Есть компонент CoolTrayIcon, там это все реализовано. Ну а если хочешь сам покопаться - смотри, что сказал Song + WM_ENDSESSION.
В обработчике WM_QUERYENDSESSION нужно как минимум вынуть иконку из трэя, но лучше еще послать главному окну своего приложения месидж типа "Закройся". А можно просто сказать Windows, что все в порядке вот так: msg.Result:= 1;
Song (2003-05-29 08:25:00) [11]WM_QUERYENDSESSION
BJValentine (2003-05-28 11:00:00) [12]В 2000 Pro - ждёт, пока не закрою. Мне понтно почему ждёт, а юзерам-нет.
Мое имя (2003-05-28 10:58:00) [13]а чо-не закрываецца?