TC官方合作论坛

 找回密码
 立即注册
查看: 1739|回复: 2

[已解决] 请帮忙帮忙利用GetSystemPowerStatus API 获取电池电量

[复制链接]
发表于 2016-1-17 11:25:47 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
劳架有心人土帮忙利用 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
回复

使用道具 举报

发表于 2016-1-17 12:53:46 | 显示全部楼层
变量 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"])   
结束
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-17 13:58:28 | 显示全部楼层
谢谢大神
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-29 12:48 , Processed in 0.050531 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表