Delen via


Energiebeheer in Windows Forms

Uw Windows Forms-toepassingen kunnen profiteren van de energiebeheerfuncties in het Windows-besturingssysteem. Uw toepassingen kunnen de energiestatus van een computer bewaken en actie ondernemen wanneer er een statuswijziging plaatsvindt. Als uw toepassing bijvoorbeeld wordt uitgevoerd op een draagbare computer, kunt u bepaalde functies in uw toepassing uitschakelen wanneer de acculading van de computer onder een bepaald niveau valt.

Het .NET Framework biedt een PowerModeChanged gebeurtenis die optreedt wanneer er een wijziging in de energiestatus is, zoals wanneer een gebruiker het besturingssysteem onderbreekt of hervat, of wanneer de stroomstatus of de batterijstatus verandert. De eigenschap PowerStatus van de SystemInformation-klasse kan worden gebruikt om een query uit te voeren op de huidige status, zoals wordt weergegeven in het volgende codevoorbeeld.

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

Naast de BatteryChargeStatus opsommingen bevat de eigenschap PowerStatus ook opsommingen voor het bepalen van de accucapaciteit (BatteryFullLifetime) en het acculadingspercentage (BatteryLifePercent, BatteryLifeRemaining).

U kunt de SetSuspendState methode van de Application gebruiken om een computer in de sluimerstand of onderbrekingsmodus te plaatsen. Als het argument force is ingesteld op false, verzendt het besturingssysteem een gebeurtenis naar alle toepassingen die toestemming vragen om te onderbreken. Als het argument disableWakeEvent is ingesteld op true, schakelt het besturingssysteem alle wake-gebeurtenissen uit.

In het volgende codevoorbeeld ziet u hoe u een computer in de slaapstand plaatst.

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

Zie ook