Gestion de l'alimentation dans Windows Forms
Vos applications Windows Forms peuvent bénéficier des fonctionnalités de gestion de l'alimentation du système d'exploitation Windows. Vos applications peuvent surveiller l'état de l'alimentation d'un ordinateur et agir lorsqu'une modification de l'état se produit. Par exemple, si votre application s'exécute sur un ordinateur portable, certaines fonctionnalités dans votre application devront peut-être être désactivées lorsque la charge de la batterie de l'ordinateur descend en-dessous d'un certain niveau.
Le .NET Framework fournit un événement PowerModeChanged qui se produit chaque fois que l'état de l'alimentation change, par exemple, lorsqu'un utilisateur interrompt ou redémarre le système d'exploitation ou lorsque l'état de l'alimentation secteur ou de la batterie change. La propriété PowerStatus de la classe SystemInformation peut être utilisée pour demander l'état actuel, comme indiqué dans l'exemple de code suivant.
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;
}
}
En plus des énumérations BatteryChargeStatus, la propriété PowerStatus contient également des énumérations permettant de déterminer la capacité de la batterie (BatteryFullLifetime) ainsi que le pourcentage de charge de la batterie (BatteryLifePercent, BatteryLifeRemaining).
Vous pouvez utiliser la méthode SetSuspendState du Application pour mettre un ordinateur en veille prolongée ou en mode veille. Si l'argument force a la valeur false, le système d'exploitation diffuse un événement à toutes les applications demandant l'autorisation de mettre en veille. Si l'argument disableWakeEvent a la valeur true, le système d'exploitation désactive tous les événements de mise en éveil.
L'exemple de code suivant montre comment mettre un ordinateur en veille prolongée.
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);
}
Voir aussi
Référence
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Novembre 2010 |
Erreurs corrigées dans l'exemple de code. |
Commentaires client. |