델파이

키보드, 마우스 최종입력 알아내기

미스터몽키 2009. 11. 7. 14:29

메신저 등을 사용할 때 한동안 입력이 없으면 "자리비움" 표시를 합니다.
이럴때 사용할 수 있는 방법은 마우스, 키보드 후킹을 해도 되지만
더 간단한 방법이 있군요.

타이머 이벤트 또는 Application의 onIdle 이벤트에 넣어서 사용하면 되겠습니다.   - 볼랜드포럼자료

 

##### 주의 - 정상언#####

 테스트해본 결과 "타이머 이벤트" 를 사용하면  포커스가 해당 프로그래에 없어도 키보드 후킹을 하지만

Application onIdle은 해당 프로그램에 포커스가 있을때만 작동한다

 

function SecondsIdle: Cardinal;
var
  liInfo: TLastInputInfo;
begin
  liInfo.cbSize := SizeOf(TLastInputInfo);
  GetLastInputInfo(liInfo);

  Result := (GetTickCount - liInfo.dwTime) div 1000;
end;
procedure TForm2.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);  //타이머이베트에 넣으면 포커스에 관계없이작동
begin
  edit1.Text := inttostr(SecondsIdle);
end;