macOS 中的电池状态 API?

发布于 2024-07-07 20:59:12 字数 118 浏览 6 评论 0原文

如何从我自己的应用程序读取 MacBookPro 上的电池状态?

到目前为止,谷歌搜索仅揭示了设备驱动程序处理电源事件的 API - 没有任何关于用户态进程访问此信息的信息。

谢谢。

How can I read the status of the battery on my MacBookPro from my own application?

Googling has so far only revealed APIs for device drivers to handle power events - there's nothing about user-land processes accessing this information.

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

情仇皆在手 2024-07-14 20:59:12

如果您正在寻找一种从命令行快速查询的方法,您会发现 pmset 命令很有帮助。 要查询电池状态,具体可以使用:

$ pmset -g batt

If you're looking for a quick way to query it from the command line, you'll find the pmset command helpful. To query the battery status, specifically, use:

$ pmset -g batt
国际总奸 2024-07-14 20:59:12

为此,您需要使用 IOKit,特别是 IOPowerSources 函数。 您可以使用 IOPSCopyPowerSourcesInfo() 获取 blob,然后使用 IOPSCopyPowerSourcesList() 从中提取 CFArray,列出电源。 然后使用 IOPSGetPowerSourceDescription() 提取字典(请参阅 IOPSKeys .h 表示字典的内容)。

You'll want to use IOKit for this, specifically the IOPowerSources functions. You can use IOPSCopyPowerSourcesInfo() to get a blob, and IOPSCopyPowerSourcesList() to then extract a CFArray out of that, listing the power sources. Then use IOPSGetPowerSourceDescription() to pull out a dictionary (see IOPSKeys.h for the contents of the dictionary).

昔梦 2024-07-14 20:59:12

也许有助于将文本提取到脚本应用程序

pmset -g batt | head -n 1 | cut -c19- | rev | cut -c 2- | rev

输出中

Battery Power
AC Power

Maybe help extracted text into script app

pmset -g batt | head -n 1 | cut -c19- | rev | cut -c 2- | rev

output

Battery Power
AC Power
自找没趣 2024-07-14 20:59:12

对于 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];

For Objective-C, this works to get the current percentage:

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];
狼性发作 2024-07-14 20:59:12

查看系统管理控制器。 我手边没有 MBP,但我相信你需要看看 smc.h

Look at the System Management Controller. I don't have my MBP handy, but I believe you need to look at smc.h

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文