2010-07-23 87 views
11

我想以編程方式喚醒系統從睡眠中,有沒有辦法做到這一點?如何以程序喚醒睡眠如果蓋子關閉?

我已閱讀以下鏈接: http://developer.apple.com/mac/library/qa/qa2004/qa1340.html

此只談得到通知,但不知道有沒有辦法從睡眠狀態喚醒系統?

我很欣賞一些線程信息...

更新:

按照建議我用IOPMSchedulePowerEvent試圖

碼我用:

NSCalendarDate *timeIntervalSinceNow = [NSCalendarDate dateWithTimeIntervalSinceNow:40]; 
IOReturn result = IOPMSchedulePowerEvent ((CFDateRef)timeIntervalSinceNow, NULL, CFSTR(kIOPMAutoWake)); 

結果:

如果蓋子關閉,MacBook會失敗

我是否在做一些錯誤的事情或任何解決方案?

+0

另請參閱https://github.com/iccir/Fermata但與其他人一樣,它只是「防止」睡眠時,在翻蓋,不知道是否有任何「醒來」睡眠的mac ... – rogerdpack 2017-12-15 18:20:02

回答

6

您可以通過電源管理器使用IOPMSchedulePowerEvent安排喚醒事件。您可能可以安排立即醒來。 pmset是電源管理器的命令行包裝器。在某些情況下,您還可以通過IOCancelPowerChange防止睡眠。

您可以通過生成鼠標或按鍵事件來防止睡眠或喚醒。生成事件的一種方法是使用CGPostKeyboardEvent。

編輯:

正常睡眠不同於蛤殼閉睡。要影響後者,你必須編寫一個內核擴展,如Insomnia

+2

你怎麼會醒來通過生成一個事件?如果電腦睡着了,你的代碼沒有運行。 – JWWalker 2010-07-23 06:38:04

+0

謝謝,讓我試試看。你的意思是,即使蓋子靠近睡眠的權利,這也可以工作嗎? – 2010-07-23 07:05:51

+0

我試圖用IOPMSchedulePowerEvent從睡眠中喚醒,如果蓋子關閉,MacBook會失敗。 – 2010-07-23 11:08:29

相關問題