Compartir a través de


Administración de energía en formularios Windows Forms

Las aplicaciones de Windows Forms pueden aprovecharse de las características de administración de energía del sistema operativo Windows. Las aplicaciones pueden supervisar el estado energético de un equipo y realizar una acción cuando se produzca un cambio de estado. Por ejemplo, si la aplicación se ejecuta en un equipo portátil, conviene deshabilitar algunas funciones de la aplicación si la carga de la batería del equipo queda por debajo de un nivel determinado.

.NET Framework proporciona un evento PowerModeChanged que tiene lugar siempre que haya un cambio en el estado de energía, ya sea cuando un usuario suspende o reanuda el sistema operativo, o cuando cambia el estado de la alimentación de CA o el estado de la batería. La propiedad PowerStatus de la clase SystemInformation se puede utilizar para consultar el estado actual, tal como se muestra en el código siguiente:

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

Además de las enumeraciones BatteryChargeStatus, la propiedad PowerStatus también contiene enumeraciones para determinar la capacidad de la batería (BatteryFullLifetime) y el porcentaje de carga de la batería (BatteryLifePercent, BatteryLifeRemaining).

Puede utilizar el método SetSuspendState de Application para poner un equipo en hibernación o en el modo de suspensión. Si el argumento force se establece en false, el sistema operativo difundirá un evento a todas las aplicaciones que soliciten permiso para suspender. Si el argumento disableWakeEvent se establece en true, el sistema operativo deshabilitará todos los eventos de activación.

El ejemplo de código siguiente muestra cómo poner un equipo en hibernación.

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

Vea también

Referencia

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch

Historial de cambios

Fecha

Historial

Motivo

Noviembre de 2010

Se han corregido los errores en el ejemplo de código.

Comentarios de los clientes.