def get_current_batteries_info(batteries: list): result = {} if not threading.current_thread() is threading.main_thread(): pythoncom.CoInitialize() try: w = WMI(namespace='WMI') for details in w.BatteryStatus(): for battery in batteries: result[battery] = None if battery == details.InstanceName: result[battery] = { 'Active': details.Active, 'ChargeRate': details.ChargeRate, 'Charging': details.Charging, 'Discharging': details.Discharging, 'DischargeRate': details.DischargeRate, 'PowerOnline': details.PowerOnline, 'Voltage': details.Voltage, 'RemainingCapacity': details.RemainingCapacity } return result except Exception as e: print(e) return None finally: if not threading.current_thread() is threading.main_thread(): pythoncom.CoUninitialize()
def get_batteries_info(): batteries = [] if not threading.current_thread() is threading.main_thread(): pythoncom.CoInitialize() try: w = WMI(namespace='WMI') for battery in w.BatteryStaticData( ["Active", "DeviceName", "DesignedCapacity", "ManufactureName", "SerialNumber", "InstanceName"]): batt = {"DeviceName": battery.DeviceName, "ManufactureName": battery.ManufactureName, "SerialNumber": battery.SerialNumber, "DesignedCapacity": battery.DesignedCapacity, "InstanceName": battery.InstanceName} for capacity in w.BatteryFullChargedCapacity(): if batt['InstanceName'] == capacity.InstanceName: batt['FullChargedCapacity'] = capacity.FullChargedCapacity for cycle_count in w.BatteryCycleCount(): if batt['InstanceName'] == cycle_count.InstanceName: batt['CycleCount'] = cycle_count.CycleCount for details in w.BatteryStatus(): if batt['InstanceName'] == details.InstanceName: batt['Status'] = { 'Active': details.Active, 'ChargeRate': details.ChargeRate, 'Charging': details.Charging, 'Discharging': details.Discharging, 'DischargeRate': details.DischargeRate, 'PowerOnline': details.PowerOnline, 'Voltage': details.Voltage, 'RemainingCapacity': details.RemainingCapacity } batteries.append(batt) return batteries except Exception as e: print(e) return None finally: if not threading.current_thread() is threading.main_thread(): pythoncom.CoUninitialize()