昨天一不小心就发现了这个找了很久的一个API函数。过去一直想写一个判断笔记本是直流通电还是电池通电来写一个小程序,硬是没找到这个而终止了想法,今天发现了原来WindowsAPI还有这么好一个函数:GetSystemPowerStatus。
一、简介
GetSystemPowerStatus 函数返回系统电源的一个电量状态,这个状态显示系统是否运行在AC(交流电)或者DC(直流电)电流下。电池当前是否在充电或者电量的剩余使用时间。
二、原型
[cpp] view plain copy- BOOL GetSystemPowerStatus(
- LPSYSTEM_POWER_STATUS lpSystemPowerSatus
- );
SYSTEM_POWER_STATUS的定义:[cpp] view plain copy- typedef struct _SYSTEM_POWER_STATUS {
- BYTE ACLineStatus;
- BYTE BatteryFlag;
- BYTE BatteryLifePercent;
- BYTE Reserved1;
- DWORD BatteryLifeTime;
- DWORD BatteryFullLifeTime;
- } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
三、参数说明
ACLineStatus 交流电源状态Value | Meaning | - 0
Offline
- 1
Online
- 255
Unknown status
BatteryFlag 电池充电状态。 可以包含一或多个以下值Value | Meaning | - 1
高,电量大于66%
- 2
低,小于33%
- 4
极低,小于5%
- 8
充电中
- 128
没有电池
- 255
未知,无法读取状态
BatteryLifePercent 电池还有百分之几能充满.0~100,若未知则为255Reserved1 保留,必须为0
BatteryLifeTime 秒为单位的电池剩余电量, 若未知则为-1BatteryFullLifeTime 秒为单位的电池充满电的电量,若未知则为-1
源文https://blog.csdn.net/wangqiulin123456/article/details/8535809