2011-05-16 40 views
15

我使用如何檢測Windows是要休眠還是暫停?

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
    SystemEvents_PowerModeChanged 
); 

當Windows掛起告訴。但是,我怎麼知道它是進入休眠還是暫停?

是否有.Net或PInvoke方法來做到這一點?

回答

9

你不能告訴Hibernate之間的區別,並暫停。

詳細討論here

外賣消息是,你的問題預設假二分法:它可以是休眠,暫停或混合睡眠......當混合睡眠從掛起轉換到休眠用戶代碼甚至不運行(實際上可能有無代碼運行,過渡發生在斷電的情況下)。

因此,當混合睡眠的決定發生時,系統不知道它是否會從暫停或休眠狀態恢復,並且它不能告訴你它不知道什麼。

1

根據MSDN,e.Mode(您的事件處理函數應具有第二個參數PowerChangedEventArgs e)的值將是「Resume」,「StatusChange」或「Suspend」之一的枚舉。但是,它似乎沒有提供比這更詳細的信息,所以假設如果狀態爲掛起,則PC正在休眠或休眠。

HTH,

本傑明