Во-первых, реализуйте все это, скопировав его в свой код (модуль или класс): https://msdn.microsoft.com/en-us/library/aa457088.aspx
Тогда:
Public Function isOnCharge() As Boolean
Dim status As New SYSTEM_POWER_STATUS_EX2
GetSystemPowerStatusEx2(status, Convert.ToUInt32(Marshal.SizeOf(status)), True)
If status.BatteryCurrent < 10000 Then
return true 'plugged in
else return false 'Unplugged
End If
End Function
Я сделал это, потому что сэмплы с SystemState.PowerBatteryState & BatteryState.Charging не работали, поэтому мне удалось найти другой способ заставить его работать.
Если мое устройство было подключено, status.batteryCurrent было меньше 10000, но если оно было отключено, его значение было больше 4000000. Вы можете провести тест на своем устройстве, если хотите получить более точные значения. Ура!