Как узнать, подключено ли мобильное устройство Windows к внешнему источнику питания с помощью VB.Net?

Устройства Windows Mobile имеют другое поведение для приостановки, когда устройство работает от батареи или от внешнего источника питания.

В моем приложении, написанном с использованием VB.net, мне нужно определить, подключено ли к устройству внешнее питание.

Есть ли способ получить этот статус из Compact Framework?

12.12.2008 15:35:02
4 ОТВЕТА
РЕШЕНИЕ

Если вы используете только WIndowsMobile 5.0 и более поздние версии, брокер State and Notification Broker - это то, что нужно искать, особенно пространство имен Status .

Для более широкой поддержки вы можете обнаружить переход состояния (к источнику переменного тока), вызывающий CeRunAppAtEvent (это может установить именованное событие, а не просто запуск приложения) с помощью кодов событий NOTIFICATION_EVENT_AC_APPLIED или NOTIFICATION_EVENT_AC_REMOVED. Это то, что делает класс DeviceManagement в Smart Device Framework .

Вы можете определить текущее состояние (вместо переходов), вызвав GetSystemPowerStatusEx2 .

3
12.12.2008 16:00:21
if (SystemState.PowerBatteryState & BatteryState.Charging) ...
1
12.12.2008 15:53:32
Будет ли это работать после того, как он полностью заряжен, но все еще подключен?
cciotti 12.12.2008 16:02:49

Это может выходить за рамки того, что вы просили, но я написал кое-что о Windows Mobile Powermanagement APIS. Он использует те же API, на которые только что ссылался Крис, но ориентированный на .Net (извините, это на C #, а не на VB.Net).

http://www.codeproject.com/KB/mobile/WiMoPower1.aspx

0
19.03.2009 05:01:07

Во-первых, реализуйте все это, скопировав его в свой код (модуль или класс): 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. Вы можете провести тест на своем устройстве, если хотите получить более точные значения. Ура!

1
11.04.2016 13:11:05