根据 MSDN,无法使用 WM_ENDSESSION 消息确定是否发生了重新启动或关机。
我找到了这样做的唯一方法,但它非常难看,并且仅适用于 Windows 2000 Server,不适用于 2008 Server。
我问的原因是我正在将 Linux 守护进程作为系统服务移植到 Windows。此守护程序对重新启动和系统关闭事件的行为不同。
如果它以某种方式有助于回答,我也在项目中使用 python 和 pywin32。
您需要调查使用 HookAPI (SetWindowsHookEx?) 在所有 ExitWindowsEx 调用发生之前捕获它们。
可能有帮助的链接: http://pastebin.com/raw.php?i= KMKiMfBD http://www.codeproject.com/KB/system/Paladin.aspx