Состояние батареи в OSX?
Как я могу прочитать состояние батареи на моем MacBookPro из моего собственного приложения?
До сих пор Googling раскрывал только API-интерфейсы для драйверов устройств для обработки событий питания - в процессах пользовательского пространства, обращающихся к этой информации, ничего нет.
Благодарю.
5 ответов
Вы захотите использовать IOKit для этого, в частности функции IOPowerSources. Ты можешь использовать IOPSCopyPowerSourcesInfo()
чтобы получить каплю, и IOPSCopyPowerSourcesList()
затем извлечь CFArray из этого, перечислив источники энергии. Тогда используйте IOPSGetPowerSourceDescription()
вытащить словарь (см. IOPSKeys.h для содержимого словаря).
Если вы ищете быстрый способ запросить его из командной строки, вы найдете команду pmset полезной. Для запроса состояния батареи, в частности, используйте:
$ pmset -g batt
Может помочь извлекать текст в приложение-скрипт
pmset -g batt | head -n 1 | cut -c19- | rev | cut -c 2- | rev
выход
Battery Power
AC Power
Посмотрите на контроллер управления системой. У меня нет MBP под рукой, но я считаю, что вам нужно посмотреть на smc.h
Для Objective-C это работает, чтобы получить текущий процент:
NSPipe *pipe = [NSPipe pipe];
NSFileHandle *file = pipe.fileHandleForReading;
NSTask *task = [[NSTask alloc] init];
task.launchPath = @"/usr/bin/pmset -g batt | perl -ne ' print \"$1\n\" if /([0-9]+%)/'";
NSPipe *pipe = [NSPipe pipe];
task.standardOutput = pipe;
[task launch];
NSData *data = [pipe availableData];