Форум: "Система";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизWM_ENDSESSION... Найти похожие ветки
← →
Alex No (2003-08-26 10:25) [0]Добрый день. Научите, как заставить правильно отработать приложение при завершении работы винды? Программа скрыта с таскбара. При попытке завершить работу Windows пользователем либо какой-то другой программой, винда не завершается, пока запущена моя прога. Почитал FAQов всяких, по-разному делал - максимум, что получилось - это закрытие проги.
Буду благодарен за рабочий примерчик ;)
← →
plotn (2003-08-26 10:39) [1]Да да да да да!!!!! И я!!!!
Я с этим, извиняюсь, трахаюсь тоже долго и не знаю что делать...
читал и озеровский фак и пытался оба события обрабатывать (+queryendsession) и все равно хрен! Юзера винду по 2 раза завершают. Обидно до слез.
← →
Alex No (2003-08-26 10:43) [2]Его фак я тоже читал.
И еще это
http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=di splay;num=1029002167
все так просто и красиво написано, но чего-то не получается.
← →
Внук (2003-08-26 10:47) [3]А товарища Рихтера читать не пробовали?
← →
Alex No (2003-08-26 10:56) [4]Которого из этих?
http://www.yandex.ru/yandsearch?rpt=image&text=%D0%E8%F5%F2%E5%F0
← →
Внук (2003-08-26 11:04) [5]Которое http://www.podgoretsky.com/classics.html
Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows
Джеффри Рихтер, четвертое издание.
Если только память меня не подводит (а она может), именно там подробно написано, как задача должна себя корректно завершать по окончании работы ОС.
← →
Song (2003-08-26 11:14) [6]2Alex No (26.08.03 10:43) [2]
Если при выходе из винды надо в программе сделать что-то объёмное по времени, то надо использовать WM_QUERYENDSESSION. В остальном только обработка WM_ENDSESSION у меня работает. Проверял на NT 4.0, w98, XP.
← →
Alex No (2003-08-26 11:27) [7]При закрытии проги выполняется скидывание параметров формы в конфиг (в файл) + если активно POP3 соединение, то разорвать его. Последнее бывает затягивается секунд на 20 (в зависимости от скорости и качества соединения).
я уже пробовал так делать?
(вмести и раздельно пробовал)
protected
procedure IsWindowsShutDown(Var Msg:TMessage); message WM_ENDSESSION;
procedure IsWindowsQueryShutDown(Var Msg:TMessage); message WM_QUERYENDSESSION;
procedure TMain_Form.IsWindowsQueryShutDown(var Msg : TMessage);
begin
inherited;
WriteLog(true, true, "WINDOWS", "ОС Windows завершила работу");
Msg.WParam:=1;
Msg.Result:=1;
Main_Form.Close;
end;
//Это отрабатывается, когда форма видна
//И так
procedure TMain_Form.IsWindowsShutDown(Var Msg:TMessage);
Begin
inherited;
//IF Msg.WParam=1 then Main_Form.Close;
msg.WParam:=1;
Msg.Result:=1;
Main_Form.Close;
End;
//А это, когда не видна форма на таскбаре
В обоих случаях винда не перегружается.
Вот и хочу выяснить, что не доделываю и что не прально делаю.
← →
plotn (2003-08-26 12:04) [8]я тоже вышеназначенные заклинания писал. и примерно похожие. и аппликейшн.терминэйт вместо форм.клозе.
единственное что помогает хотя бы срубить аппликацию это ее притушить в любом из обработчике, но винде это глубоко пофиг.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c