Windows フォームでの電源管理
更新 : 2010 年 11 月
Windows フォーム アプリケーションでは、Windows オペレーティング システムの電源管理機能を利用できます。 コンピューターの電源状態を監視し、状態が変化したときにアクションを実行できます。 たとえば、ポータブル コンピューターでアプリケーションを実行している場合、コンピューターの充電が一定レベルを下回ったときにアプリケーションの特定の機能を無効にできます。
.NET Framework では、オペレーティング システムを中断または再開したり、AC 電源やバッテリの状態が変化したりした場合など、電源状態が変化したときに発生する PowerModeChanged イベントを利用できます。 PowerStatus クラスの SystemInformation プロパティを使用すると、次のコード例に示すように現在の状態を照会できます。
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 に設定すると、すべての wake イベントが無効になります。
次のコード例は、コンピューターを休止モードに設定する方法を示しています。
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 月 |
コード例のエラーを修正しました。 |
カスタマー フィードバック |