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
Histórico de alterações
Date |
History |
Motivo |
---|---|---|
Novembro de 2010 |
Erros fixos no exemplo de código. |
Comentários do cliente. |