函数参考


_WinAPI_GetSystemPowerStatus

检索系统的电源状态.

#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 值.

注意/说明

None

相关

详情参考

在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