Здравствуйте, 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>>