TC官方合作论坛

标题: 请帮忙帮忙利用GetSystemPowerStatus API 获取电池电量 [打印本页]

作者: gospeell    时间: 2016-1-17 11:25
标题: 请帮忙帮忙利用GetSystemPowerStatus API 获取电池电量
劳架有心人土帮忙利用 GetSystemPowerStatus获取电池电量的TC函数,翻阅好多资料还是不懂写。以上是这个API的一些介绍
一、简介

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

二、原型
  1. BOOL GetSystemPowerStatus(
  2.   LPSYSTEM_POWER_STATUS lpSystemPowerSatus // [out] Pointer to a SYSTEM_POWER_STATUS structure that receives status information.
  3. );
复制代码
SYSTEM_POWER_STATUS的定义:
  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;
复制代码
三、参数说明
CLineStatus  交流电源状态
ValueMeaning
0Offline
1Online
255Unknown status

BatteryFlag  电池充电状态。 可以包含一或多个以下值
ValueMeaning
1高,电量大于66%
2低,小于33%
4极低,小于5%
8充电中
128没有电池
255未知,无法读取状态

BatteryLifePercent   电池还有百分之几能充满.0~100,若未知则为255

Reserved1   保留,必须为0


BatteryLifeTime   秒为单位的电池剩余电量, 若未知则为-1

BatteryFullLifeTime   秒为单位的电池充满电的电量,若未知则为-1

作者: 1102509486    时间: 2016-1-17 12:53
变量 address = 数组("ACLineStatus"=数组("byte"=255,"value"=0),"BatteryFlag"=数组("byte"=255,"value"=0),"BatteryLifePercent"=数组("byte"=255,"value"=0),"Reserved1"=数组("byte"=255,"value"=0),"BatteryLifeTime"=数组("long"=1,"value"=0),"BatteryFullLifeTime"=数组("long"=1,"value"=0))
变量 ret=dllcall("Kernel32.dll","long","GetSystemPowerStatus","pstruct",address)
如果(ret)
消息框(address["BatteryLifePercent"]["value"])   
结束
作者: gospeell    时间: 2016-1-17 13:58
谢谢大神




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1