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,则在大多数情况下会取消关闭。 但是,不会显示 UI,因此用户可能不知道已取消关闭。 如果应用程序返回 FALSE 以响应 WM_QUERYENDSESSION,它仍显示在关闭 UI 中。 请注意,系统不允许没有可见窗口的控制台应用程序或应用程序取消关闭。 如果这些应用程序在 5 秒内未响应 WM_QUERYENDSESSIONWM_ENDSESSION,或者返回 FALSE 以响应 WM_QUERYENDSESSION,则这些应用程序会自动终止。
关闭用户界面 系统显示每个应用程序阻止关闭的对话框。 如果用户单击 “立即结束”按钮,应用程序将终止。 如果用户单击“取消 ”按钮,则会取消关闭,应用程序将继续运行。 系统显示一个全屏 UI,它标识所有应用程序阻止关闭及其执行此作的原因(如果他们已注册了使用 ShutdownBlockReasonCreate的原因)。

 

最佳做法

  • 应用程序不应阻止关闭。 尽快响应 WM_QUERYENDSESSION,并推迟清理活动,直到处理 WM_ENDSESSION 消息。
  • 必须阻止关闭的应用程序应使用新的 ShutdownBlockReasonCreate 函数注册解释用户原因的字符串。 用户可以决定是否继续或取消关闭。
  • 应用程序不能依赖于能够阻止关闭。