Řízení spotřeby ve Windows Forms
Aplikace Windows Forms můžou využívat funkce řízení spotřeby v operačním systému Windows. Vaše aplikace můžou monitorovat stav napájení počítače a provádět akce, když dojde ke změně stavu. Pokud je například vaše aplikace spuštěná na přenosném počítači, můžete některé funkce v aplikaci zakázat, když nabíjení baterie počítače spadá pod určitou úroveň.
Rozhraní .NET Framework poskytuje PowerModeChanged událost, ke které dochází vždy, když dojde ke změně stavu napájení, například když uživatel pozastaví nebo obnoví operační systém nebo když se změní stav napájení ac nebo baterie. Vlastnost PowerStatus třídy SystemInformation lze použít k dotazování na aktuální stav, jak je znázorněno v následujícím příkladu kódu.
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
Kromě BatteryChargeStatus výčtů obsahuje vlastnost PowerStatus také výčty pro určení kapacity baterie (BatteryFullLifetime) a procento nabíjení baterie (BatteryLifePercent, BatteryLifeRemaining).
Můžete použít metodu SetSuspendState z Application k uspání nebo hibernaci počítače. Pokud je argument force
nastaven na false
, operační systém vysílá událost všem aplikacím, které požadují oprávnění k pozastavení. Pokud je argument disableWakeEvent
nastavený na true
, operační systém zakáže všechny události probuzení.
Následující příklad kódu ukazuje, jak umístit počítač do hibernace.
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
Viz také
.NET Desktop feedback