【问题标题】:Get battery status using wmi in python?在 python 中使用 wmi 获取电池状态?
【发布时间】:2014-01-13 03:42:18
【问题描述】:

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

【问题讨论】:

    标签: python class python-2.7 wmi batterylevel


    【解决方案1】:

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

    【讨论】:

    • 我不能用 wmi 做这个吗?帽子会简单得多。其中一些代码只是在我脑海中浮现,我想了解我正在使用的代码,而不仅仅是在不知道它是什么的情况下使用它。
    • @user1803425, GetSystemPowerStatus 是win32 api。您不能使用 WMI 调用它。
    • @user1803425,我更新了答案以包含使用 WMI 的代码。你需要安装pywin32
    • 我将如何获取电池电量百分比?编辑:: 我想通了。我刚刚将battery.BatteryStatus 更改为battery.EstimatedChargeRemaining 并删除了ststus 地图。
    • @user1803425,我根据您的评论更新了答案代码。谢谢。
    【解决方案2】:

    ```

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

    ```

    输出:

    EstimatedChargeRemaining  
    
    96               
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多