一个找了很久的API函数---GetSystemPowerStatus

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

 

一、简介


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


二、原型


BOOL GetSystemPowerStatus( 
  LPSYSTEM_POWER_STATUS lpSystemPowerSatus // [out] Pointer to a SYSTEM_POWER_STATUS structure that receives status information. 
);
SYSTEM_POWER_STATUS的定义:
typedef struct _SYSTEM_POWER_STATUS {
    BYTE ACLineStatus;           
    BYTE  BatteryFlag;           
    BYTE  BatteryLifePercent;    
    BYTE  Reserved1;             
    DWORD  BatteryLifeTime;      
    DWORD  BatteryFullLifeTime;  
} 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


四、简单应用


#include <Windows.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	SYSTEM_POWER_STATUS sysPowerStatus;
	GetSystemPowerStatus(&sysPowerStatus);

	cout<<"电源状态: "<<(int)sysPowerStatus.ACLineStatus<<endl;
	cout<<"电池状态: "<<(int)sysPowerStatus.BatteryFlag<<endl;
	cout<<"电量百分比: "<<(int)sysPowerStatus.BatteryLifePercent<<" %"<<endl;
	cout<<"剩余能量: "<<sysPowerStatus.BatteryLifeTime<<" 秒"<<endl;
	cout<<"总能量: "<<sysPowerStatus.BatteryFullLifeTime<<" 秒"<<endl;
	return 0;
}



  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iot-genius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值