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

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

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

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

Ответы [ 4 ]

3 голосов
/ 12 декабря 2008

Если вы используете только WIndowsMobile 5.0 и более поздние версии, брокер состояний и уведомлений найдет, в частности, пространство имен Status .

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

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

1 голос
/ 27 ноября 2015

Во-первых, реализуйте все это, скопировав его в свой код (модуль или класс): 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 голос
/ 12 декабря 2008
if (SystemState.PowerBatteryState & BatteryState.Charging) ...
0 голосов
/ 19 марта 2009

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

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

...