次の方法で共有


Windows フォームの電源管理

Windows フォーム アプリケーションでは、Windows オペレーティング システムの電源管理機能を利用できます。 アプリケーションは、コンピューターの電源状態を監視し、状態の変更が発生したときにアクションを実行できます。 たとえば、アプリケーションがポータブル コンピューターで実行されている場合は、コンピューターのバッテリー残量が特定のレベルに満たされたときに、アプリケーションの特定の機能を無効にすることができます。

.NET Framework は、ユーザーがオペレーティング システムを一時停止または再開したときや、AC 電源の状態やバッテリの状態が変化したときなど、電源状態が変化するたびに発生する PowerModeChanged イベントを提供します。 次のコード例に示すように、SystemInformation クラスの PowerStatus プロパティを使用して、現在の状態を照会できます。

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) を決定するための列挙も含まれます。

ApplicationSetSuspendState メソッドを使用して、コンピューターを休止状態または一時停止モードにすることができます。 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

関連項目