Dela via


Energisparfunktioner i Windows-formulär

Dina Windows Forms-program kan dra nytta av energisparfunktionerna i Windows-operativsystemet. Dina program kan övervaka energistatusen för en dator och vidta åtgärder när en statusändring sker. Om programmet till exempel körs på en bärbar dator kanske du vill inaktivera vissa funktioner i programmet när datorns batteriladdning faller under en viss nivå.

.NET Framework tillhandahåller en PowerModeChanged händelse som inträffar när energisparstatusen ändras, till exempel när en användare pausar eller återupptar operativsystemet, eller när ac-strömstatusen eller batteristatusen ändras. Egenskapen PowerStatus för klassen SystemInformation kan användas för att fråga efter aktuell status, enligt följande kodexempel.

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

Förutom BatteryChargeStatus uppräkningar innehåller egenskapen PowerStatus också uppräkningar för att fastställa batterikapacitet (BatteryFullLifetime) och batteriladdningsprocent (BatteryLifePercent, BatteryLifeRemaining).

Du kan använda metoden SetSuspendState för Application för att placera en dator i viloläge eller pausläge. Om argumentet force är inställt på falsesänder operativsystemet en händelse till alla program som begär behörighet att pausa. Om argumentet disableWakeEvent är inställt på trueinaktiverar operativsystemet alla aktiveringshändelser.

Följande kodexempel visar hur du placerar en dator i viloläge.

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

Se även