Compartilhar via


Gerenciamento de Energia no 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 evento PowerModeChanged 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 da energia ac ou do status da bateria é alterado. A propriedade PowerStatus da classe SystemInformation 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 enumerações BatteryChargeStatus, a propriedade PowerStatus 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 argumento force estiver definido como false, o sistema operacional transmitirá um evento para todos os aplicativos que solicitam permissão para suspender. Se o argumento disableWakeEvent é definido para true, o sistema operacional desabilita todos os eventos de ativação.

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