Share via


Windows Forms의 전원 관리

Windows Forms 애플리케이션은 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) 및 배터리 충전 백분율(BatteryLifePercent, BatteryLifeRemaining)을 판별하기 위한 열거도 포함합니다.

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

참고 항목