[Win32] GetLastInputInfo와 LASTINPUTINFO
저장소/VC++Idle Time에 관련된 정보 수집 중에 정리.
사용자 입력이 일정 시간동안 없는 경우를 확인하고자 할 때 아래와 같이 확인할 수 있다.
사용되는 API는 다음과 같다.
[GetLastInputInfo]
함수의 원형은 아래와 같다.
간단히 설명하자면 GetLastInputInfo API는 마지막 입력 이벤트의 시간을 반환한다.
여기서 입력 이벤트라 함은 keyboard/mouse 모두를 포함한 의미이다.
다른 입력장치가 있다면? 다른 입력장치 없어서 모르겠다. -_-;;;
아무튼 나머지 정보는 아래와 같다.
자, 이제 파라미터인 LASTINPUTINFO에 대해 알아보자.
LASTINPUTINFO 구조체의 원형과 기타 정보는 아래와 같다.
LASTINPUTINFO의 멤버에 대한 설명은 아래와 같다.
음... 재밌군 ㅋ
[참고]
MSDN http://msdn.microsoft.com/en-us/library/ms646302(VS.85).aspx
데브피아
사용자 입력이 일정 시간동안 없는 경우를 확인하고자 할 때 아래와 같이 확인할 수 있다.
사용되는 API는 다음과 같다.
[GetLastInputInfo]
함수의 원형은 아래와 같다.
BOOL GetLastInputInfo(
PLASTINPUTINFO plii
);
PLASTINPUTINFO plii
);
간단히 설명하자면 GetLastInputInfo API는 마지막 입력 이벤트의 시간을 반환한다.
여기서 입력 이벤트라 함은 keyboard/mouse 모두를 포함한 의미이다.
다른 입력장치가 있다면? 다른 입력장치 없어서 모르겠다. -_-;;;
아무튼 나머지 정보는 아래와 같다.
Minimum DLL Version : user32.dll
Header : Declared in winuser.h, include windows.h
Import Library : User32.lib
Minimum Operating System : Windows 2000
Return Value : 0이 아니면 성공, 0이면 실패
Parameters : PLASTINPUTINFO로 마지막 입력 이벤트 발생 시간을 얻는다.
Header : Declared in winuser.h, include windows.h
Import Library : User32.lib
Minimum Operating System : Windows 2000
Return Value : 0이 아니면 성공, 0이면 실패
Parameters : PLASTINPUTINFO로 마지막 입력 이벤트 발생 시간을 얻는다.
자, 이제 파라미터인 LASTINPUTINFO에 대해 알아보자.
LASTINPUTINFO 구조체의 원형과 기타 정보는 아래와 같다.
typedef struct tagLASTINPUTINFO {
UINT cbSize;
DWORD dwTime;
} LASTINPUTINFO, *PLASTINPUTINFO;
Header : Declared in winuser.h, include windows.h
Minimum Operating System : Windows 2000
UINT cbSize;
DWORD dwTime;
} LASTINPUTINFO, *PLASTINPUTINFO;
Header : Declared in winuser.h, include windows.h
Minimum Operating System : Windows 2000
LASTINPUTINFO의 멤버에 대한 설명은 아래와 같다.
cbSize : 크기값, 크기는 sizeof(LASTINPUINFO)로 설정해야 한다.
dwTime : 마지막 입력 이벤트 발생 시간(Tick count)을 받는다. 초기값은 그냥 0으로 해준다.
dwTime : 마지막 입력 이벤트 발생 시간(Tick count)을 받는다. 초기값은 그냥 0으로 해준다.
뭐... 일단 재료는 준비됐고~
아주아주 간단하게 샘플을 끄적거려보자.
조건 : 5초 동안 입력 이벤트가 발생하지 않으면 시스템 비프음을 발생하고 종료한다.
int main()
{
LASTINPUTINFO lastInput;
lastInput.dwTime = 0;
lastInput.cbSize = sizeof(LASTINPUTINFO);
{
LASTINPUTINFO lastInput;
lastInput.dwTime = 0;
lastInput.cbSize = sizeof(LASTINPUTINFO);
while(1)
{
if(GetLastInputInfo(&lastInput)) // 마지막 입력 이벤트 발생시간 획득
{
printf("Last Input Info time : %d\n", lastInput.dwTime);
// 5초 동안 입력이 없을 경우
if(GetTickCount() - lastInput.dwTime > 5000)
{
printf("\a"); // 비프음 발생
break;
}
printf("\n");
Sleep(1000); // 1초 대기후 다시 확인
}
}
return 0;
}
음... 재밌군 ㅋ
[참고]
MSDN http://msdn.microsoft.com/en-us/library/ms646302(VS.85).aspx
데브피아
'저장소 > VC++' 카테고리의 다른 글
[Win32] 시스템 메모리 정보 확인 (0) | 2009.09.14 |
---|---|
[Win32] PDH Error Codes (0) | 2009.09.11 |
[펌] MFC 헤더와 라이브러리 설명 (0) | 2009.09.10 |
[Error/Warning] 빌드할 때 문제가 발생했다면 여기로! (0) | 2009.08.21 |
[Error/Warning] warning LNK4098 (0) | 2009.08.21 |