我希望能夠1.從我的應用程序中檢測(並在需要時2.中止)OS關閉,最好使用Windows API。如何以編程方式中止Windows(XP | Vista)中的關機?
我知道有可能使用命令shutdown -a
手動中止關機在最壞的情況下,我可以ShellExecute這個,但我想知道是否有更好的方法來防止以編程方式關機。
也許這將足以通過編程方式通知操作系統即將關閉 - 如何做到這一點?
我希望能夠1.從我的應用程序中檢測(並在需要時2.中止)OS關閉,最好使用Windows API。如何以編程方式中止Windows(XP | Vista)中的關機?
我知道有可能使用命令shutdown -a
手動中止關機在最壞的情況下,我可以ShellExecute這個,但我想知道是否有更好的方法來防止以編程方式關機。
也許這將足以通過編程方式通知操作系統即將關閉 - 如何做到這一點?
從MSDN:
當用戶選擇結束會話,或者當應用程序調用的系統關機功能中的一個的
WM_QUERYENDSESSION
消息被髮送。如果任何應用程序返回零,則會話不會結束。一旦一個應用程序返回零,系統將立即停止發送WM_QUERYENDSESSION
消息。
因此,我的應用程序的WindowProc現在處理WM_QUERYENDSESSION
消息並返回0
。
沒想到它是這麼簡單;作爲獎勵,它也適用於Windows 2000.
關於'簡單地'返回0來阻止關機,它不像那樣簡單,如果你想以正確的方式做到這一點。特別是在Vista上。例如,請同時閱讀http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspx
不錯,這不一定是社區維基。 :) – BobbyShaftoe 2009-02-26 11:00:20
那麼,這是正確的*足夠*對我來說。此消息可能存在一些怪癖或高級操作,CW允許更多人進行編輯。 – Piskvor 2009-02-26 12:14:25