获取电池状态的API函数---GetSystemPowerStatus

2019-07-14 01:16发布

         昨天一不小心就发现了这个找了很久的一个API函数。过去一直想写一个判断笔记本是直流通电还是电池通电来写一个小程序,硬是没找到这个而终止了想法,今天发现了原来WindowsAPI还有这么好一个函数:GetSystemPowerStatus。 

一、简介


GetSystemPowerStatus 函数返回系统电源的一个电量状态,这个状态显示系统是否运行在AC(交流电)或者DC(直流电)电流下。电池当前是否在充电或者电量的剩余使用时间。

二、原型


[cpp] view plain copy
  1. BOOL GetSystemPowerStatus(   
  2.   LPSYSTEM_POWER_STATUS lpSystemPowerSatus // [out] Pointer to a SYSTEM_POWER_STATUS structure that receives status information.   
  3. );  
SYSTEM_POWER_STATUS的定义:
[cpp] view plain copy
  1. typedef struct _SYSTEM_POWER_STATUS {  
  2.     BYTE ACLineStatus;             
  3.     BYTE  BatteryFlag;             
  4.     BYTE  BatteryLifePercent;      
  5.     BYTE  Reserved1;               
  6.     DWORD  BatteryLifeTime;        
  7.     DWORD  BatteryFullLifeTime;    
  8. } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;  

三、参数说明


ACLineStatus  交流电源状态
ValueMeaning
0
Offline
1
Online
255
Unknown status
BatteryFlag  电池充电状态。 可以包含一或多个以下值
ValueMeaning
1
高,电量大于66%
2
低,小于33%
4
极低,小于5%
8
充电中
128
没有电池
255
未知,无法读取状态
BatteryLifePercent   电池还有百分之几能充满.0~100,若未知则为255

Reserved1   保留,必须为0
BatteryLifeTime   秒为单位的电池剩余电量, 若未知则为-1

BatteryFullLifeTime   秒为单位的电池充满电的电量,若未知则为-1
源文https://blog.csdn.net/wangqiulin123456/article/details/8535809