Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
1-8528
TRyaSS
2003-10-23 14:59
2003.11.03
Сообщение об открытии какой-либо программы


8-8553
dimodim
2003-07-04 13:04
2003.11.03
Как установить GlSCENE под 5-й делфи СРОЧНО!!!


14-8603
Igorek
2003-10-14 21:03
2003.11.03
Есть идея - распределенный архиватор


1-8415
andrey79
2003-10-22 13:41
2003.11.03
отправка файла


3-8262
IBNovice
2003-10-14 15:57
2003.11.03
LookUp in DBGrid




   Наверх