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

Вниз

Иконка в SysTray и завершение работы Windows   Найти похожие ветки 

 
BaDeVlad   (2003-12-29 11:39) [0]

Помещаю иконку в систрей. В ОнДестрой формы есть процедура сохранения настроек программы. При попытке закрыть форму, она скрывается.
Проблема: Если закрыть прогу (через пункт меню), параметры сохраняются, если завершить работу виндов - то нет. Простите заранее, но нигде не нашел, как пользоваться квериэндсейшн. Я его ловлю, в принципе (для аппликэйшена) и вызываю Форм1.клозе. Но что-то не работает.


 
BiN   (2003-12-29 12:57) [1]

сохраняй параметры внутри процедуры обработки сообщения WM_QUERYENDSESSION


 
BaDeVlad   (2003-12-29 13:27) [2]

To >> BiN

Не помогает. Настройки пишу в реестр обычными Делфовыми методами. WM_QUERYENDSESSION для чего вообще ловится: для Application?
Вот гадость, и проверить никак нельзя по F8 :-)


 
BiN   (2003-12-29 14:01) [3]

пиведи код


 
BiN   (2003-12-29 14:04) [4]

а проверить можно очень просто
имитируй завершение сеанса, посылая сообщение

SendMessage(Form1.handle, WM_QUERYENDSESSION, 0, ENDSESSION_LOGOFF)


 
Князев Сергей   (2003-12-29 15:33) [5]


private
{ Private declarations }
procedure WMQueryEndSession(var Message: TWMQueryEndSession);
message WM_QUERYENDSESSION;
....................

{При закрытии}

procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
inherited;
//Пихай все сохранения сюда
Close;
end;



 
BaDeVlad   (2003-12-29 17:38) [6]

TO >> Князев Сергей

Обработчик писать для главной формы нужно, или для Аппликейшена?


 
JSilver   (2003-12-29 21:12) [7]

См. сообщение тов. Князева Сергея. При завершении Винда всем процессам шлет 2 сообщения. Поделюсь кое чем о сообщении WM_QUERYENDSESSION, т. к. я тоже его использовал.
WM_QUERYENDSESSION посылается всем работающим приложениям Windows в момент инициализации процесса окончания работы Windows. Логическая переменная CanClose, передаваемая обработчику как var-параметр, может позволить программе (и Windows) завершить свою работу, если имеет значение True, значение же False не позволит программе завершить свою работу.

Следующий код демонстрирует как можно воспользоваться данным событием.

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
{Спрашиваем пользователя, если инициировано завершение работы.}
if MessageDlg("Вы уверены?", mtConfirmation, mbYesNoCancel, 0) = mrYes
then CanClose := true {Разрешаем завершение работы.}
else CanClose := false; {Не разрешаем завершение работы.}
end;

Но проще вызвать метод предка (См. сообщение тов. Князева Сергея). Это позволит автоматически определить парамктр CanClose. Обрати внимание на строку

//Пихай все сохранения сюда

А туда что хочешь поместить можно, хоть код сохранения, хоть вызыв процедуры сохранения (где хочешь там ее и реализовывай).



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

Форум: "WinAPI";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
11-12301
Alexeyss
2003-06-22 04:57
2004.03.05
Проблемма совместимости с ХР


14-12527
SlavaZ
2004-02-12 00:59
2004.03.05
Как узнать?


6-12466
zig
2003-12-29 10:35
2004.03.05
Особеннсть метода Socket.SendText


6-12480
Michael_X
2003-12-17 17:54
2004.03.05
Определение удалённой ОС.


3-12255
Санек
2004-02-09 13:10
2004.03.05
Доступные MS SQL сервера в сети





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский