2009-08-06 64 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),这个组合键将不会工作,直到您按再次返回在唤醒显示器后“释放”它。