C 在 Windows 7 下获取电池生命周期

标签 c windows winapi battery

我正在尝试编写一个程序来获取笔记本电脑电池的百分比,然后显示一个显示消息的 CMD(例如:10% -> “电池电量低!”)。 我试着用谷歌搜索它,似乎他们都尝试过使用 C++ 或 C#。 有人可以帮我用 C 吗?

编辑:感谢 zakinster 的回复。它不应该看起来像这样吗?此代码无效。

#include <Windows.h>
#include <Winbase.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    SYSTEM_POWER_STATUS status;
    GetSystemPowerStatus(&status);
    unsigned char battery = status.BatteryLifePercent;
    printf("%s", battery);
}

最佳答案

GetSystemPowerStatus来自 Win32 API 的应该提供您需要的信息:

SYSTEM_POWER_STATUS status;
if(GetSystemPowerStatus(&status)) {
    unsigned char battery = status.BatteryLifePercent;
    /* battery := 0..100 or 255 if unknown */
    if(battery == 255) {
        printf("Battery level unknown !");
    }
    else {
        printf("Battery level : %u%%.", battery);
    }
} 
else {
    printf("Cannot get the power status, error %lu", GetLastError()); 
}

请参阅 SYSTEM_POWER_STATUS 的文档包含信息的完整列表的结构。

关于C 在 Windows 7 下获取电池生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516647/

相关文章:

c++ - 是否可以在不在注册表中注册的情况下创建和使用 COM 类?

javascript - 从任何地方在 Windows 命令中执行单个 Node.js 文件

c++ - GDB - 神秘的汇编代码是什么?

c# - 创建可升级的 C# .net Windows 应用程序

c - C11 的 __STDC_VERSION__ 值是多少?

c++ - 在窗口中垂直居中多行文本,纯 winapi 和 c++

winapi - 如何使用 LoadImage 选择图标颜色深度?

Windows API功能的.NET包装器

c - 如何确定 snprintf 目标缓冲区大小

c++ - 从 C++ 调用 C 函数, "no matching function"错误