Q:

Глобальный аналог GetKeyboardState - существует ли GetAsyncKeyboardState?

Как узнать была ли нажата любая кнопка на клавиатуре, чтобы определить активность пользователя (что он не афк)?
Идеально подходит снимать отпечаток клавиатуры через GetKeyboardState и сравнивать с предыдущим отпечатком, но он ограничен рамками приложения. Есть ли аналог или асинхронный вариант функции для глобальной проверки нажатия клавиши?
У функции для одной кнопки GetKeyState есть глобальный вариант GetAsyncKeyState. У GetKeyboardState в стандартном виде такой альтернативы нет. Возможно, есть какая-то самописная функция?
Использование DLL ловушки для такого пустяка кажется расточительным и разбираться в целой DLL из-за этого не хочется + возможная борьба с антивирусом в этом случае.

A:

GetLastInputInfo Retrieves the time of the last input event.
А вот пример использования
http://www.cyberforum.ru/delphi-beginners/thread1237003.html
Минимальная версия Windows 2000 (на Win 98 не заработает).
Ну и англоязычное обсуждение: https://stackoverflow.com/questions/1442246/how-to-get-the-last-windows-active-time-by-windows-api

