Управление питанием в Windows Forms
Приложения Windows Forms могут использовать функции управления питанием операционной системы Windows. Приложения могут отслеживать состояние питания компьютера и принимать соответсвующие меры при изменении этого состояния. Например, если приложение выполняется на переносном компьютере, можно отключить определенные функции приложения, когда заряд батареи падает ниже определенного уровня.
В среде .NET Framework предусмотрено событие PowerModeChanged, происходящее при изменении состояния питания, например при приостановке или возобновлении пользователем работы операционной системы, а также при изменении состояния питания от сети или уровня заряда батареи. Для запроса текущего состояния может использоваться свойство PowerStatus класса SystemInformation, как показано в следующем примере.
Public Sub New()
InitializeComponent()
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChanged
End Sub
Private Sub PowerModeChanged(ByVal Sender As System.Object, ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
Select Case SystemInformation.PowerStatus.BatteryChargeStatus
Case BatteryChargeStatus.Low
MessageBox.Show("Battery is running low.", "Low Battery", MessageBoxButtons.OK, _
System.Windows.Forms.MessageBoxIcon.Exclamation)
Case BatteryChargeStatus.Critical
MessageBox.Show("Battery is critically low.", "Critical Battery", MessageBoxButtons.OK, _
System.Windows.Forms.MessageBoxIcon.Stop)
Case Else
' Battery is okay.
Exit Select
End Select
End Sub
public Form1()
{
InitializeComponent();
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
}
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
switch (SystemInformation.PowerStatus.BatteryChargeStatus)
{
case System.Windows.Forms.BatteryChargeStatus.Low:
MessageBox.Show("Battery is running low.", "Low Battery", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
break;
case System.Windows.Forms.BatteryChargeStatus.Critical:
MessageBox.Show("Battery is critcally low.", "Critical Battery", MessageBoxButtons.OK, MessageBoxIcon.Stop);
break;
default:
// Battery is okay.
break;
}
}
Помимо перечислений BatteryChargeStatus свойство PowerStatus также содержит перечисления для определения заряда батареи (BatteryFullLifetime) и процента заряда батареи (BatteryLifePercent, BatteryLifeRemaining).
Для перевода компьютера в спящий или ждущий режим можно использовать метод SetSuspendState класса Application. Если для аргумента force установлено значение false, операционная система будет рассылать событие всем приложениям, запрашивая разрешение на приостановку. Если для аргумента disableWakeEvent установлено значение true, операционная система отключает все события пробуждения.
В следующем примере кода демонстрируется перевод компьютера в спящий режим.
If SystemInformation.PowerStatus.BatteryChargeStatus = System.Windows.Forms.BatteryChargeStatus.Critical Then
Application.SetSuspendState(PowerState.Hibernate, False, False)
End If
if (SystemInformation.PowerStatus.BatteryChargeStatus == System.Windows.Forms.BatteryChargeStatus.Critical)
{
Application.SetSuspendState(PowerState.Hibernate, false, false);
}
См. также
Ссылки
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Ноябрь 2010 г. |
Исправлены ошибки в примере кода. |
Обратная связь от клиента. |