Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.22;
Скачать: CL | DM;

Вниз

выключение windows   Найти похожие ветки 

 
mops   (2009-10-02 15:58) [0]

Здравствуйте,
такая проблема, при выключении Windows, моя программа как-то прерывает ее и все приложения закрывается кроме моего :) Как это побороть? На CloseQuery стоит диалог типа "Выйти из программы?", но он не срабатывает.


 
clickmaker ©   (2009-10-02 15:59) [1]

> На CloseQuery стоит диалог типа "Выйти из программы?",

как стоит?


 
mops   (2009-10-02 16:01) [2]


 if MessageDlg()<>IDYES then
   begin
     CanClose := False;
     Exit;
   end;
...


 
antonn ©   (2009-10-02 16:04) [3]

может WM_QUERYENDSESSION ловить


 
mops   (2009-10-02 16:10) [4]

Может. Буду пробовать. Спасибо.


 
mops   (2009-10-05 13:38) [5]

ловлю WM_ENDSESSION и вызываю Close. Тогда программа закрывается, но Windows не выключается ) т.е. у меня открыто несколько программ, выключаю windows, все закрывается, моя спрашивает Выйти или нет, жму Да - закрывается, но windows остается включенным :(


 
RWolf ©   (2009-10-05 13:58) [6]

Справка собщает нам, что
> The WM_ENDSESSION message is sent to an application after
> Windows processes the results of the WM_QUERYENDSESSION
> message.

что означает, что, прежде чем ловить WM_ENDSESSION, неплохо бы словить WM_QUERYENDSESSION (причём разрешить оси завершить работу).


 
mops   (2009-10-05 14:03) [7]


> причём разрешить оси завершить работу


мм.. не доскажите как? )


 
RWolf ©   (2009-10-05 14:05) [8]

Впрочем, я неправ — ловить WM_QUERYENDSESSION необязательно.
Наводящий вопрос: не использует ли программа компоненты Powersock или CoolTrayIcon?


 
mops   (2009-10-05 14:07) [9]

Нет


 
RWolf ©   (2009-10-05 14:07) [10]


> мм.. не доскажите как? )

опять же читаем справку:
> If any application returns zero, the Windows session is
> not ended.


 
RWolf ©   (2009-10-05 14:10) [11]

Мое предположение — какой-то из компонентов программы неправильно обрабатывает сообщение WM_QUERYENDSESSION.
Сам с этим сталкивался пару раз.


 
mops   (2009-10-05 14:11) [12]

procedure TForm.CloseApp(var msg: TWMEndSession);
begin
 msg.Result := -1;
 inherited;
 Close;
end;


Делаю так.


 
RWolf ©   (2009-10-05 14:13) [13]

ну, раз уж я начал копипастить справку:
> If an application processes this message, it should return
> zero.


 
mops   (2009-10-05 14:19) [14]

:)
поменял на ноль. все закрылось, программа тоже закрылась, а папка откуда была запущена - нет. и винда нет.


 
RWolf ©   (2009-10-05 14:24) [15]

предлагаю обработать WM_QUERYENDSESSION, вернуть TRUE, inherited обработчик не вызывать.


 
mops   (2009-10-05 14:28) [16]

WM_QUERYENDSESSION вообще не отлавливается


 
RWolf ©   (2009-10-05 14:39) [17]

значит, кто-то выловил его до этого.

> Windows stops sending WM_QUERYENDSESSION messages as soon
> as one application returns zero.


 
mops   (2009-10-05 15:00) [18]

решил проблему. спасибо.


 
sniknik ©   (2009-10-05 15:30) [19]

> решил проблему. спасибо.
ну очень информативно и полезно... как детектив без последних страниц.

мы конечно рады за тебя, что решил, но в гости больше не ждем...


 
mops   (2009-10-05 15:42) [20]


> ну очень информативно и полезно... как детектив без последних
> страниц.
>
> мы конечно рады за тебя, что решил, но в гости больше не
> ждем...


а что тут непонятного? прочитай весь топик.
у меня не отлавливалось сообщение, посмотрел кто еще это может делать, потестировал - заработало.


 
sniknik ©   (2009-10-05 15:59) [21]

непонятно кто "убийца", шофер или дворецкий... никакое развитие сюжета, этого не заменят.

> посмотрел кто еще это может делать, потестировал - заработало.
Шерлок Холмс проверил еще раз подозреваемых, подумал - и нашел убийцу!

потрясающее завершение... только второй раз этого автора читать ну его нафиг.



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

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

Наверх




Память: 0.51 MB
Время: 0.013 c
2-1254993007
Лёша
2009-10-08 13:10
2009.11.22
Текстовый формат даты для MSSQL 2000


2-1254664097
bodun
2009-10-04 17:48
2009.11.22
Как правильно использовать указатели в данной задаче


3-1229271062
dest81
2008-12-14 19:11
2009.11.22
select неповторяющихся записей


2-1255355336
timekiller
2009-10-12 17:48
2009.11.22
Глядеть PDF своей программой


2-1254990514
Маркабес
2009-10-08 12:28
2009.11.22
where fld <> --- Что это ?