如何以编程方式中止Windows(XP | Vista)中的关机?

Pis*_*3.0 9 winapi shutdown system-shutdown

我希望能够从我的应用程序中检测(并且,如果需要,中止)操作系统关闭,最好是使用Windows API.

我知道可以使用命令手动中止关机shutdown -a在最坏的情况下,我可以ShellExecute这个,但我想知道是否有更好的方法来以编程方式阻止关机.

也许只能以编程方式通知操作系统即将关闭 - 如何做到这一点?

Pis*_*3.0 6

来自MSDN:

WM_QUERYENDSESSION当用户选择或当应用程序调用的系统关机功能中的一个结束会话消息被发送.如果任何应用程序返回零,则会话不会结束.WM_QUERYENDSESSION一旦一个应用程序返回零,系统就会停止发送消息.

所以,我的应用程序的WindowProc现在处理WM_QUERYENDSESSION消息并返回0.

没想到它就这么简单; 作为奖励,它也适用于Windows 2000.