2012-08-14 476 views
0

可能重複:
How to detect if windows is going to hibernate or suspend?Windows是否進入睡眠模式或使用C++進行休眠?

有人能刷新我的記憶中,從Windows上運行的程序的角度看有沒有辦法知道,如果當系統進入休眠模式或休眠狀態,對嗎? (我需要知道系統進入的模式,或剛剛恢復。)

+1

應該有一個標準的系統消息警告人們即將進入睡眠模式,所以需要準備的應用程序可以實際進行。那是什麼,我不知道。 – 2012-08-14 00:55:50

+0

有一個,但程序可以告訴系統是否進入睡眠或休眠狀態? – c00000fd 2012-08-14 00:57:22

+0

從技術上講,兩種狀態之間沒有太多的不同,除了處理器S狀態,系統在以後結束。無論哪種方式,應用程序都沒有運行,但休眠比純粹的睡眠更「深入」。 – 2012-08-14 00:58:47

回答

5

從我所收集的內容來看,用戶模式代碼無法區分掛起和休眠。有一個名爲SYSTEM_POWER_STATE的內核模式枚舉,其中包含您正在查找的狀態,但無法在用戶模式下獲取該狀態。

最好你可以做的就是設置回調以捕獲WM_POWERBROADCAST消息。 PBT_APMQUERYSUSPEND消息在暫停或休眠即將發生時發送。之後,如果暫停未取消,您將收到PBT_APMSUSPEND。恢復時,將發送PBT_APMRESUMEAUTOMATIC消息。

+0

謝謝VoidStar。我想知道是否可以從本地服務中獲得SYSTEM_POWER_STATE結構?我將如何使用它來作出區分? – c00000fd 2012-08-14 03:38:11

+2

請參閱[我的答案](http://stackoverflow.com/a/6187658/103167),這解釋了爲什麼它不可能。 – 2012-08-14 03:41:39

+0

是的,謝謝。我想我看到你關於系統從一個狀態轉換到另一個狀態的觀點。但在這種情況下,操作系統首先報告它進入的狀態,然後報告它恢復的狀態,這不是很好。但是,我想這太過分了,不是嗎? – c00000fd 2012-08-14 03:50:32

相關問題