2009-02-26 39 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

相關問題