2009-08-06 81 views
5

OS X上有命令/ API讓監護儀進入睡眠模式嗎?睡眠指令顯示OSX

通過睡眠模式,我的意思是完全殺死顯示器的輸出。我知道在電源設置中可以配置這個,但這是基於時間的。

回答

16

這可以用一個半未記錄的api完成。

#include <CoreFoundation/CoreFoundation.h> 
#include <IOKit/IOKitLib.h> 

/* Returns 0 on success and 1 on failure. */ 
int display_sleep(void) 
{ 
    io_registry_entry_t reg = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler"); 
    if (reg) { 
       IORegistryEntrySetCFProperty(reg, CFSTR("IORequestIdle"), kCFBooleanTrue); 
       IOObjectRelease(reg); 
     } else { 
       return 1; 
     } 
     return 0; 
} 

GCC標誌:-framework CoreFoundation -framework IOKIT

IOKit Documentation

+0

編譯版本可以在這裏找到:http://www.malcolmhall.com/products/sleepdisplay/ – rogerdpack 2011-03-29 03:04:51

+2

你可以針對多顯示器系統中的一個顯示器?這似乎睡眠所有顯示。 – regulus6633 2011-04-04 14:14:33

+0

regulus6633:我不這麼認爲。這只是要求操作系統使監視器進入睡眠狀態。如果你讓一個人睡着了,那麼當你在另一個人身上做某事時,它會立即醒來。你最好的選擇是在prefs-> display中禁用第二臺顯示器。 – Tarrant 2011-04-04 18:41:38

8

以編程方式或作爲用戶?

對於後者,Control + Shift + Eject。

+0

是的尋找一個編程解決方案 – mikeycgto 2009-08-08 20:02:30

6

在OS X 10.9.5測試,可以將顯示器用下面的命令睡覺:

$ pmset displaysleepnow 

買者 :目前,在睡眠顯示器中存在一個錯誤(小煩惱,實際上),在我發現的OS X 10.9.5中,w母雞在LaunchBar中使用睡眠顯示操作。通過調用這個命令(動作或終端),最後按下的鍵總是返回,所以當你喚醒顯示器時,這個鍵似乎會「卡住」。你可能永遠不會注意到它,但如果使用某種雙修飾鍵的龍頭來調用LaunchBar或其他應用程序(在我的情況下,Double Cmd),這個組合鍵將不會工作,直到您按再次返回在喚醒顯示器後「釋放」它。