2013-07-29 1 views
0

Я работаю над плагином Safari (цель c). Я хочу изменить яркость экрана из моего плагина. Я пробовал его с помощью «IODisplayGetFloatParameter» и «IODisplaySetFloatParameter». Но это дает мне ошибку "не удалось получить яркость дисплея 0x1b5098cc (ошибка -536870201)". Как решить эту ошибку?Как изменить яркость экрана в Mac os x?

+0

Вы можете найти ответ на свой вопрос здесь: http://stackoverflow.com/questions/9721582/adjust-mac-display-brightness- цель-c –

+0

спасибо Taha за ур ответ. Но я сам использую Macintosh. – Nik

ответ

0

Вот ответ от нити Adjust Mac display brightness Objective-C?

// 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{ 
     } 
    }  

}