Share via


關閉

有三種方式可讓應用程式關閉本機或遠端電腦:

  • 關閉系統
  • 關閉系統並重新啟動
  • 關閉應用程式、關閉並重新啟動系統,以及重新開機已註冊以重新開機的任何應用程式

若要關閉系統,請使用 ExitWindowsEx 函式搭配 EWX_SHUTDOWN 旗標。 如需範例,請參閱 如何關閉系統。 若要關閉並重新啟動系統,請使用 EWX_REBOOT 旗標。 若要使用 RegisterApplicationRestart 函式重新開機已註冊的任何應用程式重新開機,請使用 EXW_RESTARTAPPS 旗標。

InitiateShutdownInitiateSystemShutdown 和 InitiateSystemShutdownEx函式會啟動計時器並顯示對話方塊,提示使用者登出。 顯示此對話方塊時, AbortSystemShutdown 函式可以停止計時器,並防止電腦關閉。 不過,如果計時器到期,電腦就會關閉。 這些函式也可以在關機作業之後重新開機電腦。 如需詳細資訊,請參閱 顯示關機對話方塊

關機通知

具有視窗和訊息佇列的應用程式會透過 WM_QUERYENDSESSIONWM_ENDSESSION 訊息接收關機通知。 這些應用程式應該會傳回 TRUE ,以指出可以終止它們。 除非絕對必要,否則應用程式不應該封鎖系統關機。 應用程式應該在處理 WM_ENDSESSION時執行任何必要的清除。 具有未儲存資料的應用程式可以將資料儲存到暫存位置,並在下次應用程式啟動時加以還原。 建議應用程式經常儲存其資料和狀態;例如,在使用者起始的儲存作業之間自動儲存資料,以減少關閉時要儲存的資料量。

主控台應用程式在其處理常式常式中接收關機通知。 若要註冊主控台處理常式,請使用 SetConsoleCtrlHandler 函式。

服務應用程式在其處理常式常式中接收關機通知。 若要註冊服務控制項處理常式,請使用 RegisterServiceCtrlHandlerEx 函式。

封鎖關機

如果應用程式必須封鎖潛在的系統關機,它可以呼叫 ShutdownBlockReasonCreate 函式 。 呼叫端提供將向使用者顯示的原因字串。 原因字串應該簡短且清楚,為使用者提供決定是否要繼續關閉系統所需的資訊。

如何關閉系統