Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-33058
mikhasenko.anton
2003-07-18 14:13
2003.08.11
Компонент TDBF - не могу понять почему при создании


1-33188
qwerty2
2003-07-28 12:03
2003.08.11
findfirst/findnext в локальной сети


11-33083
Bartov
2002-12-02 10:23
2003.08.11
Справочная система – для ВСЕХ!


4-33390
NetKnight
2003-06-09 17:30
2003.08.11
MMSystem


1-33107
Fider58
2003-07-28 22:57
2003.08.11
Где лучше писать код: в обработчиках или в своих подрограммах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский