본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - 모니터 절전모드 해제 및 설정 ( PowerSavingMode / kernel32.dll / SetThreadExecutionState / ES_AWAYMODE_REQUIRED / ES_CONTINUOUS / ES_SYSTEM_REQUIRED / ES_DISPLAY_REQUIRED )

728x90
반응형

 

WPF & C# - 모니터 절전모드 해제 및 설정 ( PowerSavingMode / kernel32.dll / SetThreadExecutionState / ES_AWAYMODE_REQUIRED / ES_CONTINUOUS / ES_SYSTEM_REQUIRED / ES_DISPLAY_REQUIRED / SystemIdle / Idle)

PowerSavingMode.zip
0.04MB
PowerSavingMode.exe
0.01MB

 

MainWindow.xaml.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class MainWindow : Window
{
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern uint SetThreadExecutionState([In] uint esFlags);
    public const uint ES_AWAYMODE_REQUIRED = 0x00000040;    // 자리비움 상태 (통신절전모드등의 것으로 예상 됨)
    public const uint ES_CONTINUOUS = 0x80000000;    // 별도 셋팅전까지 현재 상태 유지
    public const uint ES_SYSTEM_REQUIRED = 0x00000001;    // 시스템
    public const uint ES_DISPLAY_REQUIRED = 0x00000002;    // 화면
 
    public MainWindow()
    {
        InitializeComponent();
 
        // 절전모드 ON
        SetThreadExecutionState(ES_CONTINUOUS);
 
        // 절전모드 해제
        SetThreadExecutionState(ES_CONTINUOUS | ES_AWAYMODE_REQUIRED | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
    }
}
cs

 

절전모드 해제 및 설정

ES_CONTINUOUS 변수를 사용 안하면, 별도 쓰레드를 이용하거나 디스패처 타이머 등을 이용하여 계속해서 idle 를 리셋해 주어야 한다.

항상 시스템의 안정성을 생각하자.

728x90
반응형