Управление питанием в Windows Forms
Приложения Windows Forms могут воспользоваться функциями управления питанием в операционной системе Windows. Приложения могут отслеживать состояние питания компьютера и принимать меры при изменении состояния. Например, если приложение работает на переносимом компьютере, может потребоваться отключить определенные функции в приложении, когда заряд батареи компьютера попадает под определенный уровень.
Платформа .NET Framework предоставляет событие PowerModeChanged, которое возникает при изменении состояния питания, например, когда пользователь приостанавливает или возобновляет работу операционной системы, или при изменении состояния сетевого питания или заряда батареи. Свойство 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) и процента заряда батареи (BatteryLifePercent, BatteryLifeRemaining).
Вы можете использовать метод 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
См. также
.NET Desktop feedback