调整Mac显示屏亮度Objective-C?

问题描述:

有没有办法在Objective-C中调整Mac的显示亮度?我有敏感的眼睛,有时候显示器看起来可能会变暗。与Jeff's blog post关于极客和黑暗相结合,它可以变得非常讨厌。调整Mac显示屏亮度Objective-C?

我认为这是有原因的,如果显示器可以设置为数字值,它可以设置为低于常规屏幕亮度。我已经Google了谷歌,但所有的事情都是关于iPhone的。有没有办法为Mac做到这一点?

+0

请原谅我的无知,为什么您的程序会在通过系统偏好设置轻松完成时执行此操作? – 2012-03-15 14:24:27

+0

http://*.com/questions/3239749/programmatically-change-mac-display-brightness – 2012-03-15 14:25:59

+0

http://*.com/questions/818829/how-to-dim-os-x-desktop-using-cocoa -core-animation – 2012-03-15 14:26:38

只是搜索一下,发现这:) :)

这是代码如何获得亮度。

// almost completely from: http://mattdanger.net/2008/12/adjust-mac-os-x-display-brightness-from-the-terminal/ 
- (float) get_brightness { 
    CGDirectDisplayID display[kMaxDisplays]; 
    CGDisplayCount numDisplays; 
    CGDisplayErr err; 
    err = CGGetActiveDisplayList(kMaxDisplays, display, &numDisplays); 

    if (err != CGDisplayNoErr) 
     printf("cannot get list of displays (error %d)\n",err); 
    for (CGDisplayCount i = 0; i < numDisplays; ++i) { 


     CGDirectDisplayID dspy = display[i]; 
     CFDictionaryRef originalMode = CGDisplayCurrentMode(dspy); 
     if (originalMode == NULL) 
      continue; 
     io_service_t service = CGDisplayIOServicePort(dspy); 

     float brightness; 
     err= IODisplayGetFloatParameter(service, kNilOptions, kDisplayBrightness, 
             &brightness); 
     if (err != kIOReturnSuccess) { 
      fprintf(stderr, 
        "failed to get brightness of display 0x%x (error %d)", 
        (unsigned int)dspy, err); 
      continue; 
     } 
     return brightness; 
    }  
    return -1.0;//couldn't get brightness for any display 
} 

如何设置亮度。

// almost completely from: http://mattdanger.net/2008/12/adjust-mac-os-x-display-brightness-from-the-terminal/ 
- (void) set_brightness:(float) new_brightness { 
    CGDirectDisplayID display[kMaxDisplays]; 
    CGDisplayCount numDisplays; 
    CGDisplayErr err; 
    err = CGGetActiveDisplayList(kMaxDisplays, display, &numDisplays); 

    if (err != CGDisplayNoErr) 
     printf("cannot get list of displays (error %d)\n",err); 
    for (CGDisplayCount i = 0; i < numDisplays; ++i) { 


     CGDirectDisplayID dspy = display[i]; 
     CFDictionaryRef originalMode = CGDisplayCurrentMode(dspy); 
     if (originalMode == NULL) 
      continue; 
       io_service_t service = CGDisplayIOServicePort(dspy); 

     float brightness; 
     err= IODisplayGetFloatParameter(service, kNilOptions, kDisplayBrightness, 
             &brightness); 
     if (err != kIOReturnSuccess) { 
      fprintf(stderr, 
        "failed to get brightness of display 0x%x (error %d)", 
        (unsigned int)dspy, err); 
      continue; 
     } 

     err = IODisplaySetFloatParameter(service, kNilOptions, kDisplayBrightness, 
             new_brightness); 
     if (err != kIOReturnSuccess) { 
      fprintf(stderr, 
        "Failed to set brightness of display 0x%x (error %d)", 
        (unsigned int)dspy, err); 
      continue; 
     } 

     if(brightness > 0.0){ 
     }else{ 
     } 
    }  

} 

我在这里找到了 - http://www.alecjacobson.com/weblog/?tag=brightness

+0

这是从相同的答案:http://*.com/questions/3239749/programmatically-change-mac-display-brightness – 2012-03-15 14:29:20

+0

你明白了。一个cocmmand行示例可以在这里找到:[Matt Danger](http://mattdanger.net/2008/12/adjust-mac-os-x-display-brightness-from-the-terminal/) – 2012-03-15 14:30:06

+0

它告诉我'未能设置显示器的亮度0x506ef80(错误-536870201)' – CoffeeRain 2012-03-15 14:34:13