2009-02-26 69 views
9

我希望能够1.从我的应用程序中检测(并在需要时2.中止)OS关闭,最好使用Windows API。如何以编程方式中止Windows(XP | Vista)中的关机?

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

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

回答

6

MSDN

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

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

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

+0

不错,这不一定是社区维基。 :) – BobbyShaftoe 2009-02-26 11:00:20

+0

那么,这是正确的*足够*对我来说。此消息可能存在一些怪癖或高级操作,CW允许更多人进行编辑。 – Piskvor 2009-02-26 12:14:25

相关问题