/*
// 시스템 대기모드(절전 모드, 스크린세이버) 들어가는 것 방지, cpp(c++) source code, windows api 이용
- prevent Sleep, Screen Saver, Hibernate
// 주기적으로 호출해 줘야 한다.
#define SYS_AWAKE_NONE 0
#define SYS_AWAKE_ALL 1
#define SYS_AWAKE_SYSTEM 2
#define SYS_AWAKE_DISPLAY 3
*/
int SetAwake(int nMode)
{
//SystemIdleTimerReset() Windows CE, Windows Mobile
//대기모드 중지 상태로 변경
// ES_DISPLAY_REQUIRED : 디스플레이 강제 유지
// ES_SYSTEM_REQUIRED : 시스템 강제 유지
switch( nMode)
{
case SYS_AWAKE_NONE: SetThreadExecutionState(ES_CONTINUOUS ); break;//강제 유지 끄기, 대기모드 가능 상태로 변경
#if _MSC_VER > 1200 //(VC6이상)
//W7에서 작동 OK
case SYS_AWAKE_ALL: SetThreadExecutionState(ES_CONTINUOUS |
ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED | ES_AWAYMODE_REQUIRED);
break;//
#else
//VC6, XP에서 안됨
case SYS_AWAKE_ALL: SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED ); break;//
#endif
case SYS_AWAKE_SYSTEM: SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED ); break;
case SYS_AWAKE_DISPLAY: SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED ); break;
}
//
if( nMode == SYS_AWAKE_ALL ){
SystemParametersInfo (SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0);
SystemParametersInfo (SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0);
SystemParametersInfo (SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0);
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 0, NULL, 0);
//하드끄기 방지- 임의파일을 열고 닫는다.
FILE *fp=fopen("_temp.txt_", "w");
if( fp ){ fputs("123", fp); fclose(fp); }
}
if( nMode == SYS_AWAKE_NONE ){
SystemParametersInfo (SPI_SETLOWPOWERTIMEOUT, 30, NULL, 0);
SystemParametersInfo (SPI_SETPOWEROFFTIMEOUT, 30, NULL, 0);
SystemParametersInfo (SPI_SETSCREENSAVETIMEOUT, 30, NULL, 0);
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, TRUE, NULL, 0);
}
return 1;
}
http://www.codeproject.com/KB/cpp/winmgr.aspx
http://www.codeproject.com/KB/system/disablescreensave.aspx
http://msdn.microsoft.com/en-us/library/aa373208%28VS.85%29.aspx
'Code > Desktop' 카테고리의 다른 글
Cpp Sound Library(C++) (0) | 2014.06.05 |
---|---|
CodeProject - 사운드 관련 자료 정리 (0) | 2014.06.05 |
C++ 예외 처리 (0) | 2014.04.10 |
IPC(Inter-Process Communication) 예제 정리 (0) | 2014.04.01 |
sscanf 에러 - 현재 보류 (0) | 2014.03.26 |