2012-03-16 59 views
4

睡眠(和其它節能設置)我想以編程方式獲得系統預置的節能設置在Mac OS X,paticularly,「顯示睡眠」或「電腦睡眠」我正在寫一個小應用程序的設置。編程獲取時間,直到在Mac OS X

enter image description here

我知道你可以檢索睡眠設置,例如,使用命令行從this SO answer

pmset -g | grep "^[ ]*sleep" | awk '{ print $2 }' 

它打印60(我正確的睡眠時間),但我如果可能的話,更喜歡使用本機API來獲取這些設置。不幸的是,到目前爲止,我的谷歌搜索沒有發現任何有用的東西。 NSUserDefaults是我最接近的,但我看不出怎麼會被用來獲得我以後的設置。

任何人都可以提供幫助嗎?

+0

謝謝爲鏈接。在我的研究中,我也得到了其中的一些結果。有幾個接近,比如IOPMLib的東西,但似乎沒有做我想要的。我還以爲這樣的事情會是一個很好用的和記錄的事情 - 無論是我缺少明顯的東西還是我錯了! – binarybob 2012-03-17 19:36:21

回答

1

是的,自從問這個問題以來已經有4年多了......目前還不清楚代碼是用什麼語言編寫的。使用Objective-C。

節電器偏好發現:

/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist 

從Mac應用程序中,我們現在可以使用:

NSString *powerMgt = @"/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist"; 
NSDictionary *power = [NSDictionary dictionaryWithContentsOfFile:powerMgt]; 
// for example the sleep time on AC power 
NSNumber *sleepyTime = [[[power objectForKey:@"Custom Profile"] objectForKey:@"AC Power"] objectForKey:@"System Sleep Timer"]; 

與字典看起來像:

{ 
    ActivePowerProfiles =  { 
     "AC Power" = "-1"; 
     "Battery Power" = "-1"; 
    }; 
    "Custom Profile" =  { 
     "AC Power" =   { 
      "Disk Sleep Timer" = 10; 
      "Display Sleep Timer" = 10; 
      "Display Sleep Uses Dim" = 1; 
      GPUSwitch = 2; 
      "Hibernate File" = "/var/vm/sleepimage"; 
      "Hibernate Mode" = 3; 
      "Mobile Motion Module" = 1; 
      PrioritizeNetworkReachabilityOverSleep = 0; 
      "Standby Delay" = 4200; 
      "Standby Enabled" = 0; 
      "System Sleep Timer" = 0; 
      TTYSPreventSleep = 1; 
      "Wake On AC Change" = 0; 
      "Wake On Clamshell Open" = 1; 
      "Wake On LAN" = 1; 
     }; 
     "Battery Power" =   { 
      "Disk Sleep Timer" = 10; 
      "Display Sleep Timer" = 10; 
      "Display Sleep Uses Dim" = 1; 
      GPUSwitch = 2; 
      "Hibernate File" = "/var/vm/sleepimage"; 
      "Hibernate Mode" = 3; 
      "Mobile Motion Module" = 1; 
      ReduceBrightness = 1; 
      "Standby Delay" = 4200; 
      "Standby Enabled" = 0; 
      "System Sleep Timer" = 15; 
      TTYSPreventSleep = 1; 
      "Wake On AC Change" = 0; 
      "Wake On Clamshell Open" = 1; 
     }; 
    }; 
}