Compartilhar via


Gerenciamento de Energia em Formulários do Windows

Seus aplicativos de Formulários do Windows podem aproveitar os recursos de gerenciamento de energia no sistema operacional Windows. Os aplicativos podem monitorar o status de energia de um computador e executar alguma ação quando ocorre uma alteração de status. Por exemplo, se seu aplicativo estiver sendo executado em um computador portátil, convém desativar determinados recursos do mesmo quando carga da bateria do computador cai a um determinado nível.

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

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

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

Você pode usar o método SetSuspendState do Application para colocar um computador em hibernação ou modo suspenso. Se o argumento force é definido como false, o sistema operacional irá transmitir um evento para todos os aplicativos solicitando permissão para suspender. Se o argumento disableWakeEvent é definido como true, o sistema operacional desativa todos os eventos de acordar.

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

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

Consulte também

Referência

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch

Histórico de alterações

Date

History

Motivo

Novembro de 2010

Erros fixos no exemplo de código.

Comentários do cliente.