没有实际的Win32功能来检查它.
相反,Windows在WM_QUERYENDSESSION启动关闭时将消息发送到每个应用程序.
您可以响应该消息,例如取消关闭.(虽然除非绝对必要,否则你不应这样做)
在实际关闭之前,将WM_ENDSESSION发送消息.
您应该在此消息之后执行任何清理,因为无法保证系统实际上在关闭之后关闭WM_QUERYENDSESSION.
编辑: 如果你想从服务中收听这些消息,你必须在其中加入更多的工作.
服务通常没有窗口,因此您不能简单地挂钩到现有的窗口消息队列中.相反,您必须创建一个虚拟窗口,它仅用于处理消息并使用它来处理上面的消息.
有关仅消息窗口的详细信息,请参阅MSDN文档.