Windows XP 에서 전력관리 프로그램을 제작 중이다.
테스트 중, 전원 관리 목록을 가져 오는 부분을 정리한다.
기본적으로 <PowrProf.h> 필요함으로 include 한다.
아래의 코드는 인터넷 검색을 하여 찾았으며,
정상 동작 하는 것을 확인 하였다.
굳이 함수를 바꾸지 않고 바로 호출하여 사용하여도 가능하다
일단 웹상의 코드를 그대로 첨부한다.
원문 : http://blog.naver.com/my_1028?Redirect=Log&logNo=50002603430
= 코드 =
- 선언부 -
typedef BOOLEAN (__stdcall *MYGetActivePwrScheme)(UINT *);
typedef BOOLEAN (__stdcall *MYGetCurrentPowerPolicies)(PGLOBAL_POWER_POLICY,PPOWER_POLICY);
typedef BOOLEAN (__stdcall *MYSetActivePwrScheme)(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY);
#define ERROR_ROUTINE(hInstance){ FreeLibrary(hInstanc);\
hInstance=NULL;\
return;\
}
- 실제 코드 -
{
MYGetActivePwrScheme pFunc1 = NULL;
MYGetCurrentPowerPolicies pFunc2 = NULL;
MYSetActivePwrScheme pFunc3 = NULL;
HINSTANCE hInstance = NULL;
hInstance = LoadLibrary(L"powrprof");
if(hInstance)
{
pFunc1 = (MYGetActivePwrScheme)GetProcAddress(hInstance, "GetActivePwrScheme");
if(pFunc1 ==NULL)
{
TRACE(L"GetActivePwrScheme Fail");
//ERROR_ROUTINE(hInstance);
}
pFunc2 = (MYGetCurrentPowerPolicies)GetProcAddress(hInstance, (LPCSTR)"GetCurrentPowerPolicies");
pFunc3 = (MYSetActivePwrScheme)GetProcAddress(hInstance, "SetActivePwrScheme");
UINT uiActivePwrSchIndex;
GLOBAL_POWER_POLICY stGlobalPwrPly;
POWER_POLICY stPwrPly;
if( ((pFunc1)(&uiActivePwrSchIndex)) == 0)
{
TRACE(L"Call GetActivePwrScheme Error");
}
if( ((pFunc2)(&stGlobalPwrPly, &stPwrPly)) == 0)
{
TRACE(L"Call GetCurrentPowerPolicies Error");
}
stPwrPly.user.IdleTimeOutAC = 0; //시스템 대기모드 해제
...
FreeLibrary(hInstance);
hInstance = NULL;
}
stPwrPly.user.VideoTimeoutAc //모니터 끄기
stPwrPly.user.SpindownTimeoutAc //하드디스크 끄기
stPwrPly.user.IdleTimeoutAc //시스템 대기 모드
'이것저것 > My_Work' 카테고리의 다른 글
[MFC] - 시스템의 전원 / 베터리 정보 가져오기 (2) | 2008.09.11 |
---|---|
최대 절전 모드 오류 (0) | 2008.09.11 |
[MFC] - 전원 제어 (1) | 2008.09.10 |
[MFC] - suspend모드로 전환하는 코드 (0) | 2008.09.02 |
[WINDOWS] - 명령을 입력하여 제어판 도구를 실행하는 방법 (0) | 2008.09.01 |