Administración de energía en formularios Windows Forms

Actualización: noviembre 2007

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 desactivar 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:

Private Sub PowerModeChanged(ByVal Sender As System.Object, ByVal e As _
Microsoft.Win32.PowerModeChangedEventArgs)
    Dim si As System.Windows.Forms.SystemInformation
    Select Case si.PowerStatus.BatteryChargeStatus
        Case BatteryChargeStatus.Low
            MessageBox.Show("Battery is running low", _ System.Windows.Forms.MessageBoxIcon.Exclamation)
        Case BatteryChargeStatus.Critical
            MessageBox.Show("Battery is critically low", _ System.Windows.Forms.MessageBoxIcon.Stop)
        Case Else
            ' Battery is okay.
            Exit Select
    End Select
End Sub
private void powerModeChanged(System.Object sender, _
Microsoft.Win32.PowerModeChangedEventArgs e)
{
    int si = SystemInformation.PowerStatus;
    switch (si)
        {
        case BatteryChargeStatus.Low:
            MessageBox.Show("Battery is running low", _ MessageBoxIcon.Exclamation);
        case BatteryChargeStatus.Low:
            MessageBox.Show("Battery is critcally low", _ MessageBoxIcon.Stop);
        Default:
            // Battery is okay.
        }
}

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 desactivará todos los eventos de activación.

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

Private si as System.Windows.Forms.SystemInformation
If si.PowerStatus.BatteryChargeStatus.Critical = True Then
    Application.SetSuspendState(PowerState.Hibernate, False, False)
End If
if (SystemInformation.PowerStatus.BatteryChargeStatus.ToString() == _
"Critical")
    {
        Application.SetSuspendState (PowerState.Hibernate, false, false);
    }

Vea también

Referencia

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch