suroMind

[C#] 절전모드/화면 꺼짐 방지 본문

IT분야/C#

[C#] 절전모드/화면 꺼짐 방지

suroMind 2011. 10. 31. 11:03

참조 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa373208(v=vs.85).aspx

시간이 없어서 화면 꺼지지 안꺼지는지만 테스트를 해봤습니다.
이 부분은 처음 해보는거라 검색을 해도 원하는 자료가 많지 않네요..
마음에 드는 예제소스를 찾지 못해서..ㅜ

msdn사이트에서 참조하였으며 나머지는 테스트해보시길 바랍니다.

public class Win32 {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
        [FlagsAttribute]
        public enum EXECUTION_STATE : uint {
            ES_AWAYMODE_REQUIRED = 0x00000040,
            ES_CONTINUOUS = 0x80000000,
            ES_DISPLAY_REQUIRED = 0x00000002,
            ES_SYSTEM_REQUIRED = 0x00000001
            // Legacy flag, should not be used.
            // ES_USER_PRESENT = 0x00000004
        }
        public static void PreventScreenAndSleep() {
            SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | 
                                    EXECUTION_STATE.ES_SYSTEM_REQUIRED | 
                                    EXECUTION_STATE.ES_AWAYMODE_REQUIRED | 
                                    EXECUTION_STATE.ES_DISPLAY_REQUIRED);
        }
        public static void AllowMonitorPowerdown() {
            Console.WriteLine(SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS));
        }
} 

1. c# 프로그램 시작시 Win32.PreventScreenAndSleep();  함수를 호출 하여 값을 셋팅합니다
   화면이 안꺼지는지 테스트 해보시고..

2. 프로그램 Close 될시 Win32.AllowMonitorPowerdown(); 함수를 호출하여 셋팅한 값을 초기화합니다.
   프로그램이 종료된 후에는 다시 화면이 꺼져야겠지요?

절전모드나 이런부분도 테스트를 해봐야겠네요~
Comments