在python中使用wmi获取电池状态?

时间:2014-01-13 03:42:19

标签: python class python-2.7 wmi batterylevel

我知道如何使用wmi,我之前使用过它,但是,我需要调用的Wmi类是GetSystemPowerStatus。但我无法找到并记录它。为了能够访问它,我需要知道命名空间,以及类中数据的格式。有人能帮助我吗?还有一些示例代码会很好。

2 个答案:

答案 0 :(得分:6)

使用ctypes,您可以调用win32 api:

from ctypes import *

class PowerClass(Structure):
    _fields_ = [('ACLineStatus', c_byte),
            ('BatteryFlag', c_byte),
            ('BatteryLifePercent', c_byte),
            ('Reserved1',c_byte),
            ('BatteryLifeTime',c_ulong),
            ('BatteryFullLifeTime',c_ulong)]    

powerclass = PowerClass()
result = windll.kernel32.GetSystemPowerStatus(byref(powerclass))
print(powerclass.BatteryLifePercent)

以上代码来自here


使用Win32_Battery class(您需要安装pywin32):

from win32com.client import GetObject

WMI = GetObject('winmgmts:')
for battery in WMI.InstancesOf('Win32_Battery'):
    print(battery.EstimatedChargeRemaining)

使用wmi package的替代方案:

import wmi

w = wmi.WMI()
for battery in w.query('select * from Win32_Battery'):
    print battery.EstimatedChargeRemaining

答案 1 :(得分:0)

```

import subprocess

wmic =  subprocess.getoutput("wmic path win32_battery get EstimatedChargeRemaining")
print(wmic)

```

输出:

EstimatedChargeRemaining  

96