C # - Detecta el tiempo de la última interacción del usuario con el sistema operativo

Estoy escribiendo una aplicación de bandeja pequeña que necesita detectar la última vez que un usuario interactuó con su máquina para determinar si están inactivos.

¿Hay alguna forma de recuperar la última vez que un usuario movió su mouse, presionó una tecla o interactuó de alguna manera con su máquina?

Me imagino que Windows obviamente hace un seguimiento de esto para determinar cuándo mostrar un protector de pantalla o apagar, etc., ¿así que supongo que hay una API de Windows para recuperar esto?