无符号整形 发表于 2016-9-17 09:35:16

GetSystemPowerStatus 获取电池信息

本帖最后由 无符号整形 于 2016-9-17 09:37 编辑

@拈花小仙 @康小泡 @迷雾少年 @小甲鱼 @~风介~ (排名不分先后哈)
昨天我发了MFC电源监测器,关键部分童鞋门看出来了吗?
看不出来也没事,关键部分在MFCApplication10Dlg.cpp的第168~239行。

这个是MSDN,英文比较好的可以去看看{:10_258:}

好,我们进入正题。
GetSystemPowerStatus原型:
BOOL WINAPI GetSystemPowerStatus(
_Out_ LPSYSTEM_POWER_STATUS lpSystemPowerStatus
);
lpSystemPowerStatus
一个指向SYSTEM_POWER_STATUS结构的参数,用于接收状态信息。

那么,SYSTEM_POWER_STATUS又是什么结构呢?
她的原型:
typedef struct _SYSTEM_POWER_STATUS {
BYTEACLineStatus;
BYTEBatteryFlag;
BYTEBatteryLifePercent;
BYTESystemStatusFlag;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;

ACLineStatus:交流电源状态。这个成员可以是下列值之一:

值 含义
0 已经通电
1 已经断电
255 未知



BatteryFlag:电池充电状态。这个成员可以包含一个或多个以下的值。
注意:多个值可以通过按位或同时指定!

值 含义
1 高电量(电池电量>66%)
2 低电量(电池电量>33%)
4 极低电量(电池电量>5%)
8 充电中
128 没有电池
255 未知

注意:如果值是0,说明电池没有充电并且电量在低与高之间。

BatteryLifePercent:电池剩余电量百分比,范围为0~100,如果是255则为未知

SystemStatusFlag:可以是下列值:

值含义
0 电池保护被关闭
1 电池保护被开启,会尽可能的节约能源


BatteryLifeTime:剩余电池续航时间的秒数,如果是-1,则表示剩余秒数是未知的或者设备被连接到交流电源。

BatteryFullLifeTime:电池充满电时的电池寿命,如果是-1,则表示剩余秒数是未知的或者设备被连接到交流电源。

然后就介绍完了……{:10_284:}

~风介~ 发表于 2016-9-17 10:08:21

好详细的介绍,我喜欢!{:10_270:}

拈花小仙 发表于 2016-9-17 10:19:42

必须支持,必须顶`

迷雾少年 发表于 2016-9-17 10:23:13

来支持下

小甲鱼 发表于 2016-9-17 15:48:26

很详细,很喜欢!{:10_256:}

hustjinghu 发表于 2016-11-4 21:43:01

好厉害的函数。。。。。。。。。。。。
页: [1]
查看完整版本: GetSystemPowerStatus 获取电池信息