'배터리'에 해당되는 글 2건
- 2008.10.01 노트북의 배터리 정보를 받아오자
- 2008.09.06 전원 상태를 알아오는 SYSTEM_POWER_STATUS struct
2008. 10. 1. 12:03
노트북의 배터리 정보를 받아오자
2008. 10. 1. 12:03 in Programmings/Windows Programming
10월의 첫날부터... 이런 상투적인 업무 포스트밖에 올릴 것이 없다는게 참 슬프긴 하지만.. 그리도.. 머.. -_-;;
노트북의 배터리의 정보를 받아오는 부분에 대해서 뭔가를 하고 있다. 배터리의 용량, Voltage, 상태... 뭐 그밖의 등등.. 검색을 하던중.. 좋은 정보를 얻어 포스팅 한다.
MSDN에서 검색을 했는데 'Enumerating Battery Devices'라고 꽤 쓸만한 예제 소스가 있었다.
여기(http://msdn.microsoft.com/en-us/library/bb204769(VS.85).aspx )를 클릭하면 정보를 얻을 수 있다.
이녀석을 바로 적용하면 동작하지는 않고 몇가지 수정을 해주어야 한다.
VS2005환경에서 Win32 API를 이용하여 테스트 프로그램을 작성하였다.
일단 필요한 헤더 파일('BatClass.h', 'Setupapi.h')을 적당한 위치에 넣어(#include)준다.
BatClass.h는 배터리에 관련된 것들을 정의해 놓은 헤더파일이고, Setupapi.h는 'SetupDiGetClassDevs', 'SetupDiEnumDeviceInterfaces', .. 등과 같은 함수들을 정의해 놓은 헤더파일이다.
헤더파일을 추가하고 컴파일을 하게 되면 에러가 뜰것이다. 안뜰지도 모르지만.. 본인의 경우에는 에러가 있었다.
BatClass.h라는 파일을 찾아서 열어본다.
이런 저런 코드들이 보일텐데.. GUID_DEVCLASS_BATTERY를 검색해보면 없을 거이다. GUID_DEVCLASS_BATTERY를 추가시켜주어야 한다.
코드를 대충 보면 비슷한 녀석들이 모여있는 곳이 있다. 그곳에 다음을 넣어준다.
구글에서 검색하다 찾았는데.. 위의 문장이 정의된 GUID_DEVCLASS_BATTERY 의 값인듯 하다.
이렇게 수정을 하고 컴파일을 다시 하면, 정상적으로 빌드가 될 것이고, 추가로 필요한 배터리의 정보는 소스의 내용을 수정해서 얻을 수 있을 것이다.
소스는 분석을 해봐야 더 정확한 것을 알 수 있을 듯한데.. 배터리 뿐만 아니라 여러 디바이스 드라이버의 정보를얻을 때에도 유용하게 쓰이는 듯 보인다.
노트북의 배터리의 정보를 받아오는 부분에 대해서 뭔가를 하고 있다. 배터리의 용량, Voltage, 상태... 뭐 그밖의 등등.. 검색을 하던중.. 좋은 정보를 얻어 포스팅 한다.
MSDN에서 검색을 했는데 'Enumerating Battery Devices'라고 꽤 쓸만한 예제 소스가 있었다.
여기(http://msdn.microsoft.com/en-us/library/bb204769(VS.85).aspx )를 클릭하면 정보를 얻을 수 있다.
이녀석을 바로 적용하면 동작하지는 않고 몇가지 수정을 해주어야 한다.
VS2005환경에서 Win32 API를 이용하여 테스트 프로그램을 작성하였다.
일단 필요한 헤더 파일('BatClass.h', 'Setupapi.h')을 적당한 위치에 넣어(#include)준다.
BatClass.h는 배터리에 관련된 것들을 정의해 놓은 헤더파일이고, Setupapi.h는 'SetupDiGetClassDevs', 'SetupDiEnumDeviceInterfaces', .. 등과 같은 함수들을 정의해 놓은 헤더파일이다.
헤더파일을 추가하고 컴파일을 하게 되면 에러가 뜰것이다. 안뜰지도 모르지만.. 본인의 경우에는 에러가 있었다.
HDEVINFO hdev = SetupDiGetClassDevs(&GUID_DEVCLASS_BATTERY, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
위의 위치에서 'GUID_DEVCLASS_BATTERY' 라는 녀석이 정의되지 않아 찾을 수 없다고...BatClass.h라는 파일을 찾아서 열어본다.
이런 저런 코드들이 보일텐데.. GUID_DEVCLASS_BATTERY를 검색해보면 없을 거이다. GUID_DEVCLASS_BATTERY를 추가시켜주어야 한다.
코드를 대충 보면 비슷한 녀석들이 모여있는 곳이 있다. 그곳에 다음을 넣어준다.
...
DEFINE_GUID( GUID_DEVCLASS_BATTERY,
0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A);
...
DEFINE_GUID( GUID_DEVCLASS_BATTERY,
0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A);
...
구글에서 검색하다 찾았는데.. 위의 문장이 정의된 GUID_DEVCLASS_BATTERY 의 값인듯 하다.
이렇게 수정을 하고 컴파일을 다시 하면, 정상적으로 빌드가 될 것이고, 추가로 필요한 배터리의 정보는 소스의 내용을 수정해서 얻을 수 있을 것이다.
소스는 분석을 해봐야 더 정확한 것을 알 수 있을 듯한데.. 배터리 뿐만 아니라 여러 디바이스 드라이버의 정보를얻을 때에도 유용하게 쓰이는 듯 보인다.
'Programmings > Windows Programming' 카테고리의 다른 글
MFC42D.DLL 을 찾을 수 없다라는 메시지 창이 뜰 때.. (22) | 2009.01.19 |
---|---|
Windows API 메시지 데드록(DeadLock) 관련 함수 (1) | 2008.10.01 |
error C2664: 'CreateFileW' : cannot convert parameter 1 from 'const char [9]' to 'LPCWSTR' (0) | 2008.09.22 |
하드디스크 용량 가져오기 (0) | 2008.09.19 |
윈도우를 투명하게!!! (1) | 2008.09.19 |
2008. 9. 6. 10:24
전원 상태를 알아오는 SYSTEM_POWER_STATUS struct
2008. 9. 6. 10:24 in Programmings/Windows Programming
'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 |