'관리'에 해당되는 글 2건
- 2008.09.06 전원 상태를 알아오는 SYSTEM_POWER_STATUS struct
- 2008.09.05 Windows Power management API - PBT_APMPOWERSTATUSCHANGE Event 1
전원 상태를 알아오는 SYSTEM_POWER_STATUS struct
'SYSTEM_POWER_STATUS' 는 Windows System에서 전력관리에 사용되는 구조체이다.
현재 동작하는 Windows System의 전원상태에 대한 정보를 담고 있다고 보면 된다. 전원에 대한 상태라는 것은 현재 사용하고 있는 전원이 AC인지 아니면 배터리를 사용하고 있는지에 대한 정보, 또 배터리를 사용하고 있다면 남아있는 배터리의 양이라든지 life time이라든지에 대한 정보를 말한다.
이녀석에 대한 정보를 가져오기 위해서는 'GetSystemPowerStatus()'라는 함수를 사용하게 된다. GetSystemPowerStatus()함수의 인자로 SYSTEM_POWER_STATUS가 사용되고, 현재 전원에 대한 상태정보를 인자로 사용된 이 구제체로 복사를 해오는 것이다.
현재 전원에 대한 상태정보를 알기 위해서 이 구조체를 사용하기만 하면된다.
Syntax를 보면 다음과 같다.ACLineStatustypedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE Reserved1;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
: AC power의 상태를 말한다. (0 : Offline, 1 : Online, 255 : Unknown status)
BatteryFlag
: 배터리의 charge status를 나타낸다.
1 : High-the battery capacity is at more than 66 %
2 : Low—the battery capacity is at less than 33 %
4 : Critical—the battery capacity is at less than 5 %
8 : Charging
128 : No system battery
255 : Unknown status—unable to read the battery flag information
BatteryLifePercent
남아있는 배터리의 양을 %로 표현한다. 0 ~ 100 사이의 값으로 표현되고, 상태를 알 수 없으면 255.
Reserved1
Reserved. must be zero
BatteryLifeTime
The number of seconds of battery life remaining, or -1 if remaining seconds are unknown.
BatteryFullLifeTime
The number of seconds of battery life when at full charge, or -1 if full battery lifetime is unknown.
참고 : MSDN
'Programmings > Windows Programming' 카테고리의 다른 글
Windows Power Management Structures (0) | 2008.09.11 |
---|---|
VS2005 응용프로그램 에러.. "응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다..." (3) | 2008.09.08 |
Windows Power management API - PBT_APMPOWERSTATUSCHANGE Event (1) | 2008.09.05 |
GetCurrentDirectory()를 이용한 Windows에서 현재경로 받아오기.. (1) | 2008.08.20 |
Windows 프로그램을 시작 프로그램으로 등록하기 (0) | 2008.08.19 |
Windows System에서 전력관리(Power management)를 위해 사용되는 API들이 있다. 지금 보게 될 'PBT_APMPOWERSTATUSCHANGE '라는 녀석도 그에 속한다.
'PBT_APMPOWERSTATUSCHANGE'는 사용하는 기계의 전원상태(power status)의 변화가 생길때 Windows system에서 어플리케이션에 전달(broadcast)되는 event 이다.
예를들어 노트북에서 AC전원을 사용하다가 전원코드를 뽑아서 배터리의 전원을 사용한다던지, 아님 그 반대든지.. 뭐 그런경우 시스템에서는 현재 사용하는 기계의 전원상태의 변화가 생김을 인지하고 이 이벤트를 날려준다(broadcasting).
이 이벤트는 'WM_POWERBROADCAST'라는 메시지를 통해서 어플리케이션에 전달되고, 해당하는 이벤트는 메시지의 'wParam'을 통해 전달된다.
사용방법은.. 대충 이렇다.
음.. Windows API를 예로들어 설명한다.(다른건 할줄몰라서.. 이것도.. 잘은.. -_-)
{
HDC hdc;
switch (iMessage) {
...
case WM_POWERBROADCAST:
switch(wParam){
case PBT_APMPOWERSTATUSCHANGE:
MessageBox(hWnd, TEXT("test"), TEXT("test"), MB_OK);
return 0;
}
return 0;
...
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
추가로 WM_POWERBROADCAST 메시지의 wParam은 다음과 같은 것들이 있다.
Event |
Meaning |
PBT_APMBATTERYLOW |
Battery power is low |
PBT_APMOEMEVENT |
OEM-defined event occurred |
PBT_APMPOWERSTATUSCHANGE |
Power status has changed |
PBT_APMQUERYSUSPEND |
Request for permission to suspend |
PBT_APMQUERYSUSPENDFAILED |
Suspension request denied |
PBT_APMRESUMEAUTOMATIC |
Operation resuming automatically after event |
PBT_APMRESUMECRITICAL |
Operation resuming after critical suspension |
PBT_APMRESUMESUSPEND |
Operation resuming after suspension |
PBT_APMSUSPEND |
System is suspending operation |
여기를 참고하면 될 듯 하다.
WM_POWERBROADCAST : http://msdn.microsoft.com/en-us/library/aa373247.aspx
PBT_APMPOWERSTATUSCHANGE : http://msdn.microsoft.com/en-us/library/aa372715(VS.85).aspx
'Programmings > Windows Programming' 카테고리의 다른 글
VS2005 응용프로그램 에러.. "응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다..." (3) | 2008.09.08 |
---|---|
전원 상태를 알아오는 SYSTEM_POWER_STATUS struct (0) | 2008.09.06 |
GetCurrentDirectory()를 이용한 Windows에서 현재경로 받아오기.. (1) | 2008.08.20 |
Windows 프로그램을 시작 프로그램으로 등록하기 (0) | 2008.08.19 |
GetMessage() 와 PeekMessage() (1) | 2008.08.11 |