共用方式為


Windows Form 中的電源管理

您的 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) 和電池充電百分比 (BatteryLifePercentBatteryLifeRemaining) 的列舉。

您可以使用 ApplicationSetSuspendState 方法使電腦進入休眠或暫停模式。 如果 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

另請參閱