Изменения завершения работы в Windows Vista
В следующей таблице перечислены различия между завершением работы в Windows Vista и Windows XP.
Компонент | Windows XP | Windows Vista |
---|---|---|
Блокировка завершения работы | Приложения могут задерживать реагирование на WM_QUERYENDSESSION на 5 секунд, после чего система позволяет пользователю завершить работу приложения. Приложения, возвращающие значение TRUE в ответ на WM_QUERYENDSESSION , могут задержать ответ на WM_ENDSESSION на 5 секунд, после чего система позволяет пользователю завершить работу приложения. | Приложения могут отложить реагирование на WM_QUERYENDSESSION на 5 секунд, после чего система позволяет пользователю продолжить или отменить завершение работы. Приложения, возвращающие значение TRUE в ответ на WM_QUERYENDSESSION , могут отложить ответ на WM_ENDSESSION на 5 секунд, после чего система позволяет пользователю продолжить или отменить завершение работы. |
Отмена завершения работы | Если приложение возвращает значение FALSE в ответ на WM_QUERYENDSESSION, завершение работы в большинстве случаев отменяется. Однако пользовательский интерфейс не отображается, поэтому пользователь может не знать, что завершение работы отменено. | Если приложение возвращает значение FALSE в ответ на WM_QUERYENDSESSION, оно по-прежнему отображается в пользовательском интерфейсе завершения работы. Обратите внимание, что система не разрешает консольным приложениям или приложениям без видимого окна отменять завершение работы. Эти приложения автоматически завершаются, если они не отвечают на WM_QUERYENDSESSION или WM_ENDSESSION в течение 5 секунд или если они возвращают значение FALSE в ответ на WM_QUERYENDSESSION. |
Завершение работы пользовательского интерфейса | Система отображает диалоговое окно для каждого приложения, блокирующего завершение работы. Если пользователь нажимает кнопку Завершить сейчас, приложение завершается. Если пользователь нажимает кнопку Отмена , завершение работы отменяется и приложение продолжает работать. | Система отображает полноэкранный пользовательский интерфейс, который определяет все приложения, блокирующие завершение работы, и их причины (если они зарегистрировали причину с помощью ShutdownBlockReasonCreate). |
Рекомендации
- Приложения не должны блокировать завершение работы. Как можно быстрее реагировать на WM_QUERYENDSESSION и откладывать действия по очистке до обработки сообщения WM_ENDSESSION .
- Приложения, которые должны блокировать завершение работы, должны использовать новую функцию ShutdownBlockReasonCreate для регистрации строки, объясняющей причину для пользователя. Пользователь может решить, следует ли продолжить или отменить завершение работы.
- Приложения не могут полагаться на блокировку завершения работы.