본문 바로가기

프로그래밍/MFC

마우스, 키보드 입력 장치의 마지막 입력 시간을 확인하여 IDLE Time 체크





마우스, 키보드 입력 장치의 마지막 입력 시간을 확인하여 IDLE Time 체크  

원문 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8287&page=1

이번에 신규 프로젝트를 하면서 요구사항 항목 중 하나가 사용자 입력이 몇분 이상 없을 시 특정 행동을 취해라!가 있었습니다.

 

간단히 예를 들어보죠!!

1. NateOn 처럼 몇분 동안 자리 비움하면 아이콘이 자리 비움으로 변경

2. 사용자 입력이 몇분동안 없을 경우 자동 로그오프 하라.

등등...

 

이럴때 대부분 후킹을 해야하지 않을까라고 생각을 합니다. 하지만 후킹 자체가 전역으로 이벤트를 걸어야 되는 경우가 대부분인지라 과연 그 기능 하나때문에 후킹을 꼭 써야될까? 투자대비 수익이 나오지 않는 상황으로 흘러가버리죠! 그리고 유지보수

비용은 또 얼마나 큽니까? 게다가 요즘 후킹 살짝만 잘못해도 왠만한 보안 프로그램에서 다 차단 시켜버리죠!

 

이럴때는 간단하게 GetLastInputInfo 함수를 사용해보세요!

 

LASTINPUTINFO LastInput;

LastInput.dwTime = 0;

LastInput.cbSize = sizeof(LASTINPUTINFO);

 

if(GetLastInputInfo(&LastInput))

{

       if(GetTickCount() - GetLastInput.dwTime > 60000) // 60초 동안 입력이 없을 경우

       {

             // 어떻게 하라~

       }

}

 

저의 경우 별도 스래드를 하나 돌리고 1분에 한번씩 마지막 사용자 입력 시간을 감지하여 ThreadShold 값을 초과하면

지정된 Action을 취하도록 하였습니다.