Compartilhar via


Gerenciamento de Recursos de Energia em Windows Forms

Seus aplicativos do Windows Forms podem aproveitar os recursos de gerenciamento de energia no sistema operacional Windows. Seus aplicativos podem monitorar o status de energia de um computador e tomar medidas quando ocorrer uma alteração de status. Por exemplo, se o aplicativo estiver em execução em um computador portátil, talvez você queira desabilitar determinados recursos em seu aplicativo quando a carga da bateria do computador estiver abaixo de um determinado nível.

O .NET Framework fornece um PowerModeChanged evento que ocorre sempre que há uma alteração no status de energia, como quando um usuário suspende ou retoma o sistema operacional, ou quando o status de energia AC ou da bateria é alterado. A PowerStatus propriedade da SystemInformation classe pode ser usada para consultar o status atual, conforme mostrado no exemplo de código a seguir.

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;
    }
}
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

Além das BatteryChargeStatus enumerações, a PowerStatus propriedade também contém enumerações para determinar a capacidade da bateria (BatteryFullLifetime) e o percentual de carga da bateria (BatteryLifePercent, BatteryLifeRemaining).

Você pode usar o método SetSuspendState do Application para colocar um computador no modo de hibernação ou suspensão. Se o force argumento estiver definido como false, o sistema operacional transmitirá um evento para todos os aplicativos que solicitam permissão para suspender. Se o disableWakeEvent argumento estiver definido como true, o sistema operacional desabilita todos os eventos de despertar.

O exemplo de código a seguir demonstra como colocar um computador em hibernação.

if (SystemInformation.PowerStatus.BatteryChargeStatus == System.Windows.Forms.BatteryChargeStatus.Critical)
{
    Application.SetSuspendState(PowerState.Hibernate, false, false);
}
If SystemInformation.PowerStatus.BatteryChargeStatus = System.Windows.Forms.BatteryChargeStatus.Critical Then
    Application.SetSuspendState(PowerState.Hibernate, False, False)
End If

Consulte também