Windows Form 中的電源管理
您的 Windows Forms 應用程式可以利用 Windows 作業系統中的電源管理功能。 您的應用程式可以監視電腦的電源狀態,並在發生狀態變更時採取動作。 例如,如果您的應用程式是在可攜式電腦上執行,當電腦的電池計量低於特定層級時,您可能會想要停用應用程式中的某些功能。
.NET Framework 提供 PowerModeChanged 每當電源狀態發生變更時所發生的事件,例如當使用者暫停或繼續作業系統,或 AC 電源狀態或電池狀態變更時。 類別 PowerStatus 的 SystemInformation 屬性可用來查詢目前的狀態,如下列程式碼範例所示。
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 。
您可以使用 SetSuspendState 的 Application 方法來讓電腦進入休眠或暫停模式。 如果 自 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
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應