Energieverwaltung in Windows Forms
Aktualisiert: November 2007
Ihre Windows Forms-Anwendungen können die Features zur Energieverwaltung des Windows-Betriebssystems nutzen. Anwendungen können den Energiestatus eines Computers überprüfen und Aktionen durchführen, sobald sich der Status ändert. Wenn die Anwendung beispielsweise auf einem tragbaren Computer ausgeführt wird, möchten Sie möglicherweise bestimmte Features in der Anwendung deaktivieren, wenn der Ladezustand des Akkus unter ein bestimmtes Niveau fällt.
.NET Framework stellt ein PowerModeChanged-Ereignis bereit, das auftritt, sobald sich der Energiezustand ändert, d. h., wenn ein Benutzer das Betriebssystem in den Standbymodus versetzt oder diesen beendet oder wenn sich der Zustand der Netzstrom- oder Akkuversorgung ändert. Die PowerStatus-Eigenschaft der SystemInformation-Klasse kann verwendet werden, um den aktuellen Zustand abzufragen, wie im folgenden Codebeispiel gezeigt:
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.
}
}
Neben den BatteryChargeStatus-Enumerationen enthält auch die PowerStatus-Eigenschaft bestimmte Enumerationen zur Bestimmung der Akkukapazität (BatteryFullLifetime) und des prozentualen Ladezustands des Akkus (BatteryLifePercent und BatteryLifeRemaining).
Mit der SetSuspendState-Methode der Application können Sie einen Computer in den Ruhezustand oder Standbymodus versetzen. Wenn das force-Argument auf false gesetzt ist, sendet das Betriebssystem ein Ereignis an alle Anwendungen, um die Erlaubnis für den Standbymodus anzufordern. Wenn das disableWakeEvent-Argument auf true gesetzt ist, deaktiviert das Betriebssystem alle Aktivierungsereignisse.
Im folgenden Codebeispiel wird veranschaulicht, wie ein Computer in den Ruhezustand versetzt werden kann.
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);
}