Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: 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 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
3-8271
stud
2003-10-13 11:15
2003.11.03
преобразования типов в firebird


14-8619
Knight
2003-10-14 23:30
2003.11.03
Кто о чём подумал?


1-8376
saNat
2003-10-22 02:21
2003.11.03
Незнаю в какой форум бросить - прочитайте plz


1-8414
kosha80
2003-10-22 13:00
2003.11.03
Регулярные выражения


7-8693
Дмитрий В. Белькевич
2003-08-22 15:47
2003.11.03
Печатаю прямо на канвас принтера. Как создать новую страницу?