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

Вниз

Tray+Reboot   Найти похожие ветки 

 
BJValentine ©   (2003-05-28 10:52) [0]

Завершаю работу на компе, а в трее у меня висит прога. Как можно сделать, чтобы прога закрылась когда пользователь решит выключить или перезагрузить комп?


 
Мое имя   (2003-05-28 10:58) [1]

а чо-не закрываецца?


 
BJValentine ©   (2003-05-28 11:00) [2]

В 2000 Pro - ждёт, пока не закрою. Мне понтно почему ждёт, а юзерам-нет.


 
Song ©   (2003-05-29 08:25) [3]

WM_QUERYENDSESSION


 
ppcat   (2003-05-29 09:34) [4]

Есть компонент CoolTrayIcon, там это все реализовано. Ну а если хочешь сам покопаться - смотри, что сказал Song + WM_ENDSESSION.
В обработчике WM_QUERYENDSESSION нужно как минимум вынуть иконку из трэя, но лучше еще послать главному окну своего приложения месидж типа "Закройся". А можно просто сказать Windows, что все в порядке вот так: msg.Result:= 1;


 
Sceleton   (2003-05-29 15:24) [5]

Я обычно делаю просто, в обработчике события FormCloseQuery основной формы пишу примерно так:

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
Begin
... операции, которые необходимо сделать перед закрытем программы...
Application.Terminate;
End;

У меня по крайней мере это срабатывает. Проверял в 98 и XP.


 
BJValentine ©   (2003-05-29 15:36) [6]

А в W2k не спабатывает.

У меня получилось, программа закрывается, только вот система не завершает работу. Видать чего-то не хватает. А чего именно?


 
Song ©   (2003-05-29 15:56) [7]

Не хватает вернуть правильный код на то сообщение что я написал.


 
BJValentine ©   (2003-05-29 16:01) [8]

А какой именно код?


 
Song ©   (2003-05-29 17:45) [9]

Почитай хэлп, там ясно всё написано.


 
BJValentine ©   (2003-05-29 18:19) [10]

Там пишется, что нужно вернуть true, но delphi на это ругается.


 
Song ©   (2003-05-29 22:27) [11]

True - это 1.
Если непонятно, то можно было так проверить - Integer(True)


 
Alex Konshin ©   (2003-05-30 04:50) [12]

Ведь отвечал уже на этот вопрос, но не могу найти в поиске по сайту.

Суть в том, что надо завести булевскую переменную, которая контролирует спрашивать/не спрашивать и еще в правильной обработке WM_QUERYENDSESSION:

procedure TfmServerToolBar.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
Init;
FQuietClose := True;
Message.Result := Integer(CallTerminateProcs);
Application.Terminate;
end;


 
BJValentine ©   (2003-05-30 15:21) [13]

Спасибо, заработало



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
14-33309
ЛОМАК
2003-07-24 16:59
2003.08.11
Я ломак! Что такое Design-time?


1-33166
KSergey
2003-07-28 14:27
2003.08.11
По поводу TInplaceEdit в TCustomGrid


1-33109
Region
2003-07-29 11:40
2003.08.11
Флэш


14-33361
UserName
2003-07-23 20:37
2003.08.11
Задачка...


1-33220
NetKnight
2003-07-29 13:16
2003.08.11
Как извлечь значение конкретного бита в типе byte?