如何在Windows (XP|Vista)中以编程方式取消关机?

9
我希望能够通过使用Windows API,从我的应用程序中检测操作系统的关机,并在必要时中止它。我知道可以使用命令shutdown -a手动中止关机。在最坏的情况下,我可以使用ShellExecute来执行此操作,但我想知道是否有更好的方法来编程式地防止关机。也许仅通过编程方式通知即将关闭操作系统就足够了 - 如何做到这一点?
2个回答

6

来自MSDN:

WM_QUERYENDSESSION消息在用户选择结束会话或应用程序调用系统关闭功能时发送。如果任何应用程序返回零,则不会结束会话。一旦一个应用程序返回零,系统就停止发送WM_QUERYENDSESSION消息。

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

没想到这么简单;作为奖励,它还适用于Windows 2000。


嗯,对我来说足够正确了。可能会有一些小问题或高级操作需要处理这个消息,而 CW 允许更多的人进行编辑。 - Piskvor left the building

1

这篇文章似乎在说“在Vista上更加复杂:必须阻止关机的应用程序应该使用新的关机原因API。”整篇文章中从未提到在XP上处理这个问题的“更合适”的方法。我错过了什么吗? - Piskvor left the building

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接