2013-09-18 5 views
7

У меня есть способ определения уровня заряда батареи и таймера, чтобы периодически проверять уровень заряда батареи.Уровень батареи C#

void GetBatteryLevel() 
    { 
     try 
     { 
      //Use this code in next build 
      //System.Windows.Forms.PowerStatus status = System.Windows.Forms.SystemInformation.PowerStatus; 

      double batteryLevel; 
      ManagementObjectSearcher mos = new ManagementObjectSearcher("select EstimatedChargeRemaining from Win32_Battery"); 
      ManagementObjectCollection collection = mos.Get(); 
      foreach (ManagementObject mo in collection) 
      { 
       UInt16 remainingPercent = (UInt16)mo["EstimatedChargeRemaining"]; 
       batteryLevel   = (double)remainingPercent; 
       batteryLevel   = batteryLevel/100; 
       batteryLevel   = 1.0 - batteryLevel; 
       BatteryLevel   = new System.Windows.Point(0.0, batteryLevel); 
      } 
     } 
     catch (Exception exp) 
     { 
      Logger.LogMessage("EXCEPTION: " + exp.StackTrace); 
     } 
    } 

Есть ли способ зарегистрировать события, когда уровень заряда батареи падает или увеличивается на 1%? Я уже зарегистрирован для SystemEvents.PowerModeChanged и работает отлично.

+0

Вы можете обмануть и использовать элемент управления, который никогда не добавляется к форме, т.е. есть флажок, где вы можете изменить его значение проверяется. Я не уверен в другом способе. – Sayse

+0

Android обеспечивает события для снижения/увеличения уровня заряда батареи. Должен быть способ в окнах –

+0

, и таймеры будут влиять на батарею в зависимости от интервала –

ответ

2

Короткий ответ из библиотеки базового класса .Net no.

С учетом сказанного, имеются события мощности, но эти события находятся в ядре32. Microsoft попыталась отвлечь вас от некоторых из этих событий в классе SystemEvents, но, к сожалению, они не привязаны ко всем из них. Глядя на API управления питанием, нет события, которое отслеживает батарею так, как вы хотите.

питание Событие: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373162(v=vs.85).aspx

Услуга управление питанием имеет метод GetSystemPowerStatus, который получит вам необходимую информацию. Если у вас есть понимание работы с C++ из .Net, вы можете запросить информацию о батарее и когда она сменит ваше собственное событие.

GetSystemPowerStatus: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372693(v=vs.85).aspx

Смежные вопросы