Windows Form 中的電源管理
更新:2010 年 11 月
Windows Form 應用程式也可以使用 Windows 作業系統中的電源管理功能。 您可以透過應用程式監視電腦的電源狀態,並且在狀態發生變更時採取必要動作。 例如,如果應用程式是在攜帶型電腦上執行,當電腦的電池電力低於某種程度時,可能就需要停用應用程式中的某些功能。
.NET Framework 提供了 PowerModeChanged 事件,每當電源狀態變更時就會發生此事件,例如,當使用者暫停或繼續執行作業系統時,或者當交流電源狀態或電池狀態變更時。 SystemInformation 類別的 PowerStatus 屬性可以用來查詢目前的狀態,如下列程式碼範例所示:
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
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;
}
}
除了 BatteryChargeStatus 列舉型別以外,PowerStatus 屬性也包含列舉型別,可用來判斷電池容量 (BatteryFullLifetime) 和電池的充電百分比 (BatteryLifePercent、BatteryLifeRemaining)。
您可以使用 Application 的 SetSuspendState 方法,使電腦進入休眠或暫停模式。 如果 force 引數是設定為 false,作業系統就會將事件傳送至要求暫止使用權限的所有應用程式。 如果 disableWakeEvent 引數是設定為 true,作業系統就會停用所有喚醒事件。
下列程式碼範例會示範如何使電腦進入休眠狀態。
If SystemInformation.PowerStatus.BatteryChargeStatus = System.Windows.Forms.BatteryChargeStatus.Critical Then
Application.SetSuspendState(PowerState.Hibernate, False, False)
End If
if (SystemInformation.PowerStatus.BatteryChargeStatus == System.Windows.Forms.BatteryChargeStatus.Critical)
{
Application.SetSuspendState(PowerState.Hibernate, false, false);
}
請參閱
參考
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 11 月 |
已修正程式碼範例中的錯誤。 |
客戶回函。 |