Freigeben über


Energiemanagement in Windows Forms

Ihre Windows Forms-Anwendungen können die Power Management-Features im Windows-Betriebssystem nutzen. Ihre Anwendungen können den Energiestatus eines Computers überwachen und Maßnahmen ergreifen, wenn eine Statusänderung auftritt. Wenn Ihre Anwendung z. B. auf einem tragbaren Computer ausgeführt wird, können Sie bestimmte Features in Ihrer Anwendung deaktivieren, wenn der Akkustand des Computers unter eine bestimmte Stufe fällt.

.NET Framework stellt ein PowerModeChanged Ereignis bereit, das auftritt, wenn sich ein Stromstatus ändert, z. B. wenn ein Benutzer das Betriebssystem anhält oder fortsetzt oder wenn sich der Netzstromstatus oder der Akkustatus ändert. Die PowerStatus-Eigenschaft der SystemInformation-Klasse kann verwendet werden, um den aktuellen Status abzufragen, wie im folgenden Codebeispiel gezeigt.

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

Neben den BatteryChargeStatus Enumerationen enthält die eigenschaft PowerStatus auch Enumerationen zum Bestimmen der Akkukapazität (BatteryFullLifetime) und des Prozentsatzes der Akkuladung (BatteryLifePercent, BatteryLifeRemaining).

Sie können die SetSuspendState-Methode des Application verwenden, um einen Computer in den Ruhezustand oder in den Standby-Modus zu versetzen. Wenn das Argument force auf falsefestgelegt ist, sendet das Betriebssystem ein Ereignis an alle Anwendungen, die um die Erlaubnis zum Anhalten bitten. Wenn das argument disableWakeEvent auf truefestgelegt ist, deaktiviert das Betriebssystem alle Wake-Ereignisse.

Im folgenden Codebeispiel wird veranschaulicht, wie ein Computer in den Ruhezustand versetzt wird.

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

Siehe auch