728x90
반응형
WPF & C# - 모니터 절전모드 해제 및 설정 ( PowerSavingMode / kernel32.dll / SetThreadExecutionState / ES_AWAYMODE_REQUIRED / ES_CONTINUOUS / ES_SYSTEM_REQUIRED / ES_DISPLAY_REQUIRED / SystemIdle / Idle) |
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
반응형