語言

Windows Forms 中的電源管理

您的 Windows Forms 應用程式可以利用 Windows 作業系統中的電源管理功能。 您的應用程式可以監視電腦的電源狀態,並在發生狀態變更時採取動作。 例如,如果您的應用程式是在可攜式電腦上執行,當電腦的電池電量低於特定層級時,您可能需要停用應用程式中的某些功能。

.NET Framework 提供一個 PowerModeChanged 事件,每當電源狀態發生變更時就會觸發,例如當使用者暫停或恢復作業系統,或當 AC 電源狀態或電池狀態發生變更時。 SystemInformation 類別的 PowerStatus 屬性可用來查詢目前的狀態,如下列程式碼範例所示。

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 列舉之外,PowerStatus 屬性還包含用於判斷電池容量 (BatteryFullLifetime) 和電池充電百分比 (BatteryLifePercent、BatteryLifeRemaining) 的列舉。

您可以使用 Application 的 SetSuspendState 方法,使電腦進入休眠或暫停模式。 如果 force 引數設定為 false,則作業系統會將事件廣播給所有應用程式,以請求允許暫停。 如果 disableWakeEvent 引數設定為 true,則作業系統會停用所有喚醒事件。

下列程式碼範例示範如何使電腦進入休眠。

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

另請參閱