Поделиться через


Управление питанием в Windows Forms

Обновлен: Ноябрь 2007

Приложения Windows Forms могут использовать функции управления питанием операционной системы Windows. Приложения могут отслеживать состояние питания компьютера и принимать соответсвующие меры при изменении этого состояния. Например, если приложение выполняется на переносном компьютере, можно отключить определенные функции приложения, когда заряд батареи падает ниже определенного уровня.

В среде .NET Framework предусмотрено событие PowerModeChanged, происходящее при изменении состояния питания, например при приостановке или возобновлении пользователем работы операционной системы, а также при изменении состояния питания от сети или уровня заряда батареи. Для запроса текущего состояния может использоваться свойство PowerStatus класса SystemInformation, как показано в следующем примере.

Private Sub PowerModeChanged(ByVal Sender As System.Object, ByVal e As _
Microsoft.Win32.PowerModeChangedEventArgs)
    Dim si As System.Windows.Forms.SystemInformation
    Select Case si.PowerStatus.BatteryChargeStatus
        Case BatteryChargeStatus.Low
            MessageBox.Show("Battery is running low", _ System.Windows.Forms.MessageBoxIcon.Exclamation)
        Case BatteryChargeStatus.Critical
            MessageBox.Show("Battery is critically low", _ System.Windows.Forms.MessageBoxIcon.Stop)
        Case Else
            ' Battery is okay.
            Exit Select
    End Select
End Sub
private void powerModeChanged(System.Object sender, _
Microsoft.Win32.PowerModeChangedEventArgs e)
{
    int si = SystemInformation.PowerStatus;
    switch (si)
        {
        case BatteryChargeStatus.Low:
            MessageBox.Show("Battery is running low", _ MessageBoxIcon.Exclamation);
        case BatteryChargeStatus.Low:
            MessageBox.Show("Battery is critcally low", _ MessageBoxIcon.Stop);
        Default:
            // Battery is okay.
        }
}

Помимо перечислений BatteryChargeStatus свойство PowerStatus также содержит перечисления для определения заряда батареи (BatteryFullLifetime) и процента заряда батареи (BatteryLifePercent, BatteryLifeRemaining).

Для перевода компьютера в спящий или ждущий режим можно использовать метод SetSuspendState класса Application. Если для аргумента force установлено значение false, операционная система будет рассылать событие всем приложениям, запрашивая разрешение на приостановку. Если для аргумента disableWakeEvent установлено значение true, операционная система отключает все события пробуждения.

В следующем примере кода демонстрируется перевод компьютера в спящий режим.

Private si as System.Windows.Forms.SystemInformation
If si.PowerStatus.BatteryChargeStatus.Critical = True Then
    Application.SetSuspendState(PowerState.Hibernate, False, False)
End If
if (SystemInformation.PowerStatus.BatteryChargeStatus.ToString() == _
"Critical")
    {
        Application.SetSuspendState (PowerState.Hibernate, false, false);
    }

См. также

Ссылки

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch