폼에 TTimer를 올리고 OnTimer 이벤트를 추가합니다.
procedure TForm1.Timer1Timer(Sender: TObject);
  function IsIdle(msTime: Integer): Boolean;
  var
    LastInputInfo: TLastInputInfo;
  begin
    LastInputInfo.cbSize := SizeOf(TLastInputInfo);
    GetLastInputInfo(LastInputInfo);
    
    Result := (GetTickCount - LastInputInfo.dwTime) div msTime > 0;
  end;
begin
  //설정된 초만큼 사용자 입력이 없을 경우
  if IsIdle(5000) then begin
    Timer1.Enabled := False;
    
    {To Do}
  end;
end;
폼의 OnMouseMove 이벤트 등 다양한 방법으로 유휴시간을 체크합니다.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if not Timer1.Enabled then
    Timer1.Enabled := True;
end;반응형