Re[2]: Притормозить завершение работы Windows XP
От: Spaider Верблюд  
Дата: 04.05.05 07:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:


А>>Всем добрый день, посоветуйте, как правильно использовать

А>>обработчик OnQueryEndSession?
А>>не приостанавливает выполнение процесса — программа всё равно
А>>закрывается!
S>Странно. Документация гласит, что пока программа не вернет True, шатдаун не будет инициализирован.

Неправда ваша, документация гласит

The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.

Т.е. как только одно из приложений отказывается закрываться, процесс logoff прекращается. Имеет место быть ситуация, описанная автором вопроса.

Однако Sinclair всё-таки выдал дельный совет. Вот код из MSDN. По сути он аналогичен синклеровскому.

case WM_QUERYENDSESSION:  
{ 
    int r; 
    r = MessageBox(NULL, "Shut down?","WM_QUERYENDSESSION", MB_YESNO); 
 
    // Return TRUE to allow shutdown, FALSE to stop. 
 
    return r == IDYES; 
    break; 
}


Может быть у вас имеет место быть ситуация, когда в процессе окончательных действий организуется побочный цикл обработки сообщений, который пропускает WM_QUERYENDSESSION, и процесс завершается?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
--
К вашим услугам,
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.