正在关闭
应用程序可通过三种方式关闭本地或远程计算机:
- 关闭系统
- 关闭系统并重启它
- 关闭应用程序,关闭并重启系统,并重启已注册重启的任何应用程序
若要关闭系统,请使用带有 EWX_SHUTDOWN 标志的 ExitWindowsEx 函数。 有关示例,请参阅 如何关闭系统。 若要关闭并重启系统,请使用 EWX_REBOOT 标志。 若要使用 RegisterApplicationRestart 函数重启已注册重启的任何应用程序,请使用 EXW_RESTARTAPPS 标志。
InitiateShutdown、InitiateSystemShutdown 和 InitiateSystemShutdownEx 函数启动计时器并显示提示用户注销的对话框。 显示此对话框时, AbortSystemShutdown 函数可以停止计时器并阻止计算机关闭。 但是,如果计时器过期,计算机将关闭。 这些函数还可以在关闭操作后重启计算机。 有关详细信息,请参阅 显示关闭对话框。
关闭通知
具有窗口和消息队列的应用程序通过 WM_QUERYENDSESSION 和 WM_ENDSESSION 消息接收关闭通知。 这些应用程序应返回 TRUE 以指示它们可以终止。 除非绝对必要,否则应用程序不应阻止系统关闭。 应用程序应在处理 WM_ENDSESSION时执行任何所需的清理。 具有未保存数据的应用程序可以将数据保存到临时位置,并在下次应用程序启动时还原它。 建议应用程序经常保存其数据和状态;例如,在用户启动的保存操作之间自动保存数据,以减少关闭时要保存的数据量。
控制台应用程序在其处理程序例程中接收关闭通知。 若要注册控制台处理程序,请使用 SetConsoleCtrlHandler 函数。
服务应用程序在其处理程序例程中接收关闭通知。 若要注册服务控件处理程序,请使用 RegisterServiceCtrlHandlerEx 函数。
阻止关闭
如果应用程序必须阻止潜在的系统关闭,它可以调用 ShutdownBlockReasonCreate 函数。 调用方提供将向用户显示的原因字符串。 原因字符串应简短而清晰,为用户提供决定是否继续关闭系统所需的信息。
相关主题