Zarządzanie energią w formularzach systemu Windows

Aplikacje Windows Forms mogą korzystać z funkcji zarządzania energią w systemie operacyjnym Windows. Aplikacje mogą monitorować stan zasilania komputera i podejmować działania po zmianie stanu. Jeśli na przykład aplikacja jest uruchomiona na komputerze przenośnym, możesz wyłączyć niektóre funkcje w aplikacji, gdy obciążenie baterii komputera spadnie poniżej określonego poziomu.

Program .NET Framework udostępnia PowerModeChanged zdarzenie, które występuje za każdym razem, gdy wystąpi zmiana stanu zasilania, na przykład gdy użytkownik zawiesza lub wznawia działanie systemu operacyjnego, albo gdy stan zasilania prądu ac lub stan baterii ulegnie zmianie. Właściwość PowerStatusSystemInformation klasy może służyć do wykonywania zapytań o bieżący stan, jak pokazano w poniższym przykładzie kodu.

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

BatteryChargeStatus Poza wyliczeniami PowerStatus właściwość zawiera również wyliczenia służące do określania pojemności baterii (BatteryFullLifetime) i procentu naładowania baterii (BatteryLifePercent, BatteryLifeRemaining).

Możesz użyć SetSuspendState metody , Application aby umieścić komputer w tryb hibernacji lub wstrzymania. force Jeśli argument jest ustawiony na falsewartość , system operacyjny będzie emitować zdarzenie do wszystkich aplikacji żądających uprawnień do zawieszenia. disableWakeEvent Jeśli argument jest ustawiony na truewartość , system operacyjny wyłącza wszystkie zdarzenia wznawiania.

W poniższym przykładzie kodu pokazano, jak umieścić komputer w hibernacji.

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

Zobacz też