检索系统的电源状态.
#Include <WinAPIEx.au3>
_WinAPI_GetSystemPowerStatus ( )
None. |
成功: | 返回以下参数的数组: | |
[0] | AC 电源状态. 可以是下列值之一: | |
0 | 未连接 | |
1 | 已连接 | |
255 | 未知状态 | |
[1] | 电池的充电状态.可以包含一或多个下列标志: | |
0 | 电池未充电, 电池容量在高与低之间. | |
1 | 高 - 电池容量超过 66% | |
2 | 低 - 电池容量不足 33% | |
4 | 临界 - 电池容量低于 5% | |
8 | 充电中 | |
128 | 没有系统电池 | |
255 | 未知状态 - 无法读取电池的信息标志 | |
[2] | 充电电池剩余百分比.范围在 0 到 100,如果状态未知, 则值为 255. | |
[3] | 电池寿命的剩余秒数. 如果剩余秒数不明,则值为 -1. | |
[4] | 完全充电时的电池寿命秒数. 如果电池寿命未知, 则值为 -1. | |
失败: | 返回 0,并设置@error标志为非 0 值. |
在MSDN中搜索
#Include <APIConstants.au3>
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
Opt('MustDeclareVars', 1)
Global $hForm, $Msg, $Button, $Label[4], $Data[4]
$hForm = GUICreate('MyGUI', 180, 135, -1, -1, -1, $WS_EX_TOPMOST)
$Button = GUICtrlCreateButton('OK', 55, 101, 70, 23)
GUICtrlCreateLabel('AC power:', 10, 14, 90, 14)
GUICtrlCreateLabel('Status:', 10, 34, 70, 14)
GUICtrlCreateLabel('Charge:', 10, 54, 90, 14)
GUICtrlCreateLabel('Time remaining:', 10, 74, 90, 14)
For $i = 0 To 3
$Label[$i] = GUICtrlCreateLabel('Unknown', 110, 14 + 20 * $i, 60, 14)
Next
GUISetState()
AdlibRegister('_BatteryStatus', 1000)
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE, $Button
ExitLoop
EndSwitch
WEnd
Func _BatteryStatus()
Local $Data = _WinAPI_GetSystemPowerStatus()
If Not IsArray($Data) Then
Return
EndIf
Local $H, $M
If BitAND($Data[1], 128) Then
$Data[0] = 'Not present'
For $i = 1 To 3
$Data[$i] = 'Unknown'
Next
Else
Switch $Data[0]
Case 0
$Data[0] = 'Offline'
Case 1
$Data[0] = 'Online'
Case Else
$Data[0] = 'Unknown'
EndSwitch
Switch $Data[2]
Case 0 To 100
$Data[2] &= '%'
Case Else
$Data[2] = 'Unknown'
EndSwitch
Switch $Data[3]
Case -1
$Data[3] = 'Unknown'
Case Else
$H = ($Data[3] - Mod($Data[3], 3600)) / 3600
$M = ($Data[3] - Mod($Data[3], 60)) / 60 - $H * 60
$Data[3] = StringFormat($H & ':%02d', $M)
EndSwitch
If BitAND($Data[1], 8) Then
$Data[1] = 'Charging'
Else
Switch BitAND($Data[1], 0xF)
Case 1
$Data[1] = 'High'
Case 2
$Data[1] = 'Low'
Case 4
$Data[1] = 'Critical'
Case Else
$Data[1] = 'Unknown'
EndSwitch
EndIf
EndIf
For $i = 0 To 3
GUICtrlSetData($Label[$i], $Data[$i])
Next
EndFunc ;==>_BatteryStatus