Gestion de l'alimentation dans Windows Forms

Vos applications Windows Forms peuvent tirer parti des fonctionnalités de gestion de l’alimentation dans le système d’exploitation Windows. Vos applications peuvent surveiller l’état d’alimentation d’un ordinateur et prendre des mesures lorsqu’une modification d’état se produit. Par exemple, si votre application s’exécute sur un ordinateur portable, vous pouvez désactiver certaines fonctionnalités de votre application lorsque la charge de la batterie de l’ordinateur est inférieure à un certain niveau.

Le .NET Framework fournit un PowerModeChanged événement qui se produit chaque fois qu’il existe une modification de l’état de l’alimentation, par exemple lorsqu’un utilisateur suspend ou reprend le système d’exploitation, ou lorsque l’état de l’alimentation de l’ac ou de la batterie change. La PowerStatus propriété de la SystemInformation classe peut être utilisée pour rechercher l’état actuel, comme illustré dans l’exemple de code suivant.

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

Outre les BatteryChargeStatus énumérations, la PowerStatus propriété contient également des énumérations pour déterminer la capacité de batterie (BatteryFullLifetime) et le pourcentage de charge de batterie (BatteryLifePercent, BatteryLifeRemaining).

Vous pouvez utiliser la SetSuspendState méthode de l’ordinateur Application pour mettre un ordinateur en veille prolongée ou suspendre le mode. Si l’argument force est défini falsesur , le système d’exploitation diffuse un événement à toutes les applications demandant l’autorisation de suspendre. Si l’argument disableWakeEvent est défini truesur , le système d’exploitation désactive tous les événements de veille.

L’exemple de code suivant montre comment placer un ordinateur en veille prolongée.

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

Voir aussi