다음을 통해 공유


Windows Forms의 전원 관리

업데이트: 2010년 11월

Windows Forms 응용 프로그램을 사용하면 Windows 운영 체제의 강력한 관리 기능을 사용할 수 있습니다. 응용 프로그램에서 컴퓨터의 전원 상태를 모니터링하고 상태가 변경될 경우 조치를 취할 수 있습니다. 예를 들어, 휴대용 컴퓨터에서 응용 프로그램을 실행할 경우 컴퓨터의 배터리 충전이 일정 수준 이하가 되면 응용 프로그램의 특정 기능을 해제할 수 있습니다.

.NET Framework에서는 사용자가 운영 체제를 일시 중단하거나 다시 시작하는 경우 또는 AC 전원 상태나 배터리 상태가 변경되는 경우처럼 전원 상태가 변경될 때마다 발생하는 PowerModeChanged 이벤트를 제공합니다. SystemInformation 클래스의 PowerStatus 속성을 사용하여 다음 코드 예제에서 볼 수 있는 것처럼 현재 상태를 쿼리할 수 있습니다.

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;
    }
}

PowerStatus 속성에는 BatteryChargeStatus 열거형 이외에 배터리 용량(BatteryFullLifetime) 및 배터리 충전율(BatteryLifePercent, BatteryLifeRemaining)을 확인할 수 있는 열거형도 있습니다.

ApplicationSetSuspendState 메서드를 사용하면 컴퓨터를 최대 절전 모드나 일시 중단 모드로 만들 수 있습니다. force 인수가 false로 설정된 경우 운영 체제는 일시 중단 권한을 요청하는 모든 응용 프로그램으로 이벤트를 브로드캐스팅합니다. disableWakeEvent 인수가 true로 설정된 경우에는 운영 체제가 모든 절전 모드 종료 이벤트를 사용하지 않습니다.

다음 코드 예제에서는 컴퓨터를 최대 절전 모드로 만드는 방법을 보여 줍니다.

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);
}

참고 항목

참조

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch

변경 기록

날짜

변경 내용

이유

2010년 11월

코드 예제의 오류가 수정되었습니다.

고객 의견