共用方式為


Windows Form 中的電源管理

更新:2007 年 11 月

Windows Form 應用程式也可以使用 Windows 作業系統中的電源管理功能。您可以透過應用程式監視電腦的電源狀態,並且在狀態發生變更時採取必要動作。例如,如果應用程式是在攜帶型電腦上執行,當電腦的電池電力低於某種程度時,可能就需要停用應用程式中的某些功能。

.NET Framework 提供了 PowerModeChanged 事件,每當電源狀態變更時就會發生此事件,例如,當使用者暫停或繼續執行作業系統時,或者當交流電源狀態或電池狀態變更時。SystemInformation 類別的 PowerStatus 屬性可以用來查詢目前的狀態,如下列程式碼範例所示:

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.
        }
}

除了 BatteryChargeStatus 列舉型別以外,PowerStatus 屬性也包含列舉型別,可用來判斷電池容量 (BatteryFullLifetime) 和電池的充電百分比 (BatteryLifePercentBatteryLifeRemaining)。

您可以使用 ApplicationSetSuspendState 方法,使電腦進入休眠或暫停模式。如果 force 引數是設定為 false,作業系統就會將事件傳送至要求暫止使用權限的所有應用程式。如果 disableWakeEvent 引數是設定為 true,作業系統就會停用所有喚醒事件。

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

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);
    }

請參閱

參考

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch