2

我知道如何使用 wmi,我以前使用过它,但是,我似乎需要调用的 wmi 类是 GetSystemPowerStatus。但我在查找和记录它时遇到了麻烦。为了能够访问它,我需要知道命名空间以及类内数据的格式。有人可以帮助我吗?还有一些示例代码会很好。

4

2 回答 2

7

使用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)

上面的代码来自这里


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

from win32com.client import GetObject

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

使用wmi的替代方案:

import wmi

w = wmi.WMI()
for battery in w.query('select * from Win32_Battery'):
    print battery.EstimatedChargeRemaining
于 2014-01-13T03:50:06.887 回答
0

```

import subprocess

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

```

输出:

EstimatedChargeRemaining  

96               
于 2017-12-04T00:48:10.690 回答