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 函式來註冊字串,以向使用者說明原因。 使用者可以決定是否要繼續或取消關機。
  • 應用程式無法依賴能夠封鎖關機。