在Windows 7下获取电池寿命的C语言代码

5
我正在编写一个程序,用于获取笔记本电池的百分比,并显示一个CMD窗口,显示一条消息(例如:10% ->“电量低!”)。 我已经尝试过在Google上搜索,似乎他们都是用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);
}

你不需要包含 winbase.h,因为它已经被 windows.h 包含了。请查看我的最后一次编辑以获取正确的错误检查。此外,status.BatteryLifePercent 是一个 8 位无符号整数,表示电池电量百分比(从 0 到 100),如果未知则为 255,不应该作为字符串字符打印。 - zakinster
非常感谢,它正在运行!我现在会添加一些微调 ;) - user3439355
我经常收到C++和C#的文档,但不是C的,无法理解,真是让人烦恼。我认为你也不需要所有这些头文件,只需要stdio.hwindows.h就可以了 :) - Xantium
1个回答

6

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结构的文档,获取包含信息的完整列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接