【发布时间】:2014-01-13 03:42:18
【问题描述】:
我知道如何使用 wmi,我以前使用过,但是,我似乎需要调用的 wmi 类是 GetSystemPowerStatus。但我在查找和记录它时遇到了麻烦。为了能够访问它,我需要知道命名空间以及类内数据的格式。有人可以帮助我吗?还有一些示例代码会很好。
【问题讨论】:
标签: python class python-2.7 wmi batterylevel
我知道如何使用 wmi,我以前使用过,但是,我似乎需要调用的 wmi 类是 GetSystemPowerStatus。但我在查找和记录它时遇到了麻烦。为了能够访问它,我需要知道命名空间以及类内数据的格式。有人可以帮助我吗?还有一些示例代码会很好。
【问题讨论】:
标签: python class python-2.7 wmi batterylevel
使用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
【讨论】:
GetSystemPowerStatus 是win32 api。您不能使用 WMI 调用它。
```
import subprocess
wmic = subprocess.getoutput("wmic path win32_battery get EstimatedChargeRemaining")
print(wmic)
```
输出:
EstimatedChargeRemaining
96
【讨论】: