Состояние батареи в 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];
Другие вопросы по тегам