Вы действительно можете получить состояние батареи / переменного тока с помощью:
wmic path Win32_Battery Get BatteryStatus
Но, оценка значения состояния - это не просто вопрос "is 1" против "is 1"!
Выезд:
https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-battery
Например, когда AC подключен, вы должны обычно получить "2"
Неизвестно (2)
The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging.
Но вы также можете получить набор других значений.
Я вполне уверен, что все это означает "на батарее" /«not on AC»:
Other (1) Low (4) Critical (5)
И все это означает «on AC» / «not on battery»:
Неизвестно (2) Зарядка (6) Зарядка и высокая (7) Зарядка и низкая (8) Зарядка и критическая (9)
Я очень предполагаю, что этотакже указывает «на переменном токе»:
Полностью заряжен (3)
Они кажутся менее определенными ...
Не определено (10)Частично заряженный (11)
Я бы предположил, что «Undefined (10)» означает «на переменном токе» / «без батареи».И «Частично заряженный (11)» должен означать «на аккумуляторе», но, кажется ли, «AC включен» кажется довольно туманным для этого (последнего, нечетного) перечисления.
Кроме того, обычно при отсутствии батареи в аппарате вместо этого возвращается следующее сообщение:
"Нет доступных экземпляров."
Таким образом, для моих целей я определил 4 основных "состояния" для батареи:
- РАЗРЯД
- ЗАРЯД
- FULL
- NOT PRESENT
В Linux существуют прямые аналоги для запроса к ядру.
В моей логике я считаю первым "No Instance(s) Available." == NOT PRESENT
Затем я использовал следующие оценки для кодов состояния:
DISCHARGING
Other (1)
Low (4)
Critical (5)
CHARGING
Unknown (2)
Charging (6)
Charging and High (7)
Charging and Low (8)
Charging and Critical (9)
Partially Charged (11)
FULL
Fully Charged (3)
NOT PRESENT
Undefined (10)
Кроме того, я хотел логическую проверку для «isBatteryPresent» и «isAcPower».Я опирался на оценку своего состояния, а затем подумал:
isBatteryPresent = state != NOT PRESENT
isAcPower = state != DISCHARGING