如何使用该API获取电池的状态
有这样一个API函数如下Declare Function GetSystemPowerStatus Lib "kernel32.dll" (lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
Type SYSTEM_POWER_STATUS
ACLineStatus As Byte
BatteryFlag As Byte
BatteryLifePercent As Byte
Reserved1 As Byte
BatteryLifeTime As Long
BatteryFullLifeTime As Long
End Type
其中 ACLineStatus 为电脑使用交流还是直流的判断项。
如何获得返回该参数状态?
$x =DLLCall("kernel32.dll","int","GetSystemPowerStatus","byt ",ACLineStatus)
MsgBox(1,1,$x,1)
显示错误,请问高手,该如何描述,谢谢
[ 本帖最后由 sxpms 于 2008-11-8 22:05 编辑 ]
;======================================================
; _BatteryQuery()
; Return information on the Battery
; Sets @Error on error
; Returns an array:
; $array = ACPower(0=offline, 1=online, 255=unknown)
; $array = BatteryFlag(1=High, 2=Low, 4=Critical,
; 8=Charging 128=No Battery, 255=Unknown
; Use BitAnd to test, ie BitAnd($array,128)
; $array = BatteryLife %(0-100, 255=unknown)
; $array = Seconds left of charge, estimate(4294967295=unknown)
;======================================================
Func _BatteryQuery()
Local $SystemPower, $ret, $array
; Setup $array and $SystemPower
$SystemPower = DllStructCreate("ubyte;ubyte;ubyte;ubyte;ulong;ulong")
If @error Then
SetError(-1)
Return $array
EndIf
; make the DllCall
$ret = DllCall("kernel32.dll", "int", "GetSystemPowerStatus", "ptr", DllStructGetPtr($SystemPower))
If @error Then;DllCall Failed
SetError(-2)
$SystemPower = 0
Return $array
EndIf
If Not $ret Then; GetSystemPowerStatus Failed
SetError(-3)
$SystemPower = 0
Return $array
EndIf
; Fill the array
$array = DllStructGetData($SystemPower, 1); AC
$array = DllStructGetData($SystemPower, 2); Battery Charge
$array = DllStructGetData($SystemPower, 3); Battery Charge %
$array = DllStructGetData($SystemPower, 5); Sec Battery Left
; free the struct
$SystemPower = 0
Return $array
EndFunc;==>_BatteryQuery
谢谢你,周末愉快 调用时,返回无数据,是我的电脑有问题吗?
$bt= _BatteryQuery()
For $t=0 to 2
MsgBox(1, 1, $bt[$t], 1)
Next
Func _BatteryQuery()
Local $SystemPower, $ret, $array
[ 本帖最后由 sxpms 于 2008-11-7 22:58 编辑 ] 麻烦叁恨居士送人送到底, 帮我一把吧。我主要是检测我家里是否有电,无电短信告之,需要这个函数 可以检测是否连接电源和电池电量的。
这里返回说得很清楚了的啦。
;$array = ACPower(0=offline, 1=online, 255=unknown)
$battery = _BatteryQuery()
Switch $battery
case0
MsgBox(0,0,"AC Power is Offline")
case1
MsgBox(0,0,"AC Power is OnLine")
case Else
MsgBox(0,0,"AC Power is Unknown")
EndSwitch
我电脑使用情况返回不对,不过对API的使用有一定程度的了解,谢谢!
[ 本帖最后由 sxpms 于 2008-11-8 22:14 编辑 ] 我想知道电池的电量又该怎么写了?
谢谢了! 谢谢 sanhen 提供的代码!我搞定了! 正好入手epc 回去研究下 真是踏破铁鞋无觅处....
多谢居士! 现在学这个有点吃力。LZ可以发详细一点有代码吗?3Q~~~~ #Include <WinAPIEx.au3>
_WinAPI_GetSystemPowerStatus()
_WinAPI_DevicePowerSetDeviceState() 回复 13# netegg
非常感谢O(∩_∩)O~
页:
[1]