Главная страница
    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.46 MB
Время: 0.106 c
6-33236
napil
2003-06-01 04:14
2003.08.11
Потоковое AUDIO


1-33181
Maxi-mov
2003-07-27 00:06
2003.08.11
Как из моего приложения редакторовать ячейку Excel ?


1-33174
Flying Home
2003-07-28 14:46
2003.08.11
Конвертация строк


4-33404
sizmrebi
2003-06-09 11:56
2003.08.11
Ispolzovanie Sobstvennix shriftov v Menu,Caption.....


14-33316
Бархатный
2003-07-24 21:44
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский