Estimado Diego:
La cosa es simple.
Trabajo todo a partir de clases.
En el formulario basico, le incorporo un objeto timer.
Este objeto timer dispara el thisform.release transcurridos 5 minutos (o lo que fijes) sin actividad del formulario.
En el reset del timer, cargo la hora:minutos:segundos de arranque.
En el evento timer (que se dispara cada por ejemplo 5", o lo que consideres oportuno), chequeo que entre la hora actual y la de arranque hayan transcurrido el tiempo requerido.
Si se completo, disparo el thisform.release.
Al formulario le activo el keypresspreview, para que cada vez que se pulsa una tecla, se dispare el keypress del formulario.
En el keypress del formulario, disparo el reset del timer, eso hace que se inicialice el instante de arranque, por lo que los 5' comienzan a contar de nuevo.
Creo ademas una clase boton basica, de la que derivo todos los demas botones, a los eventos de raton, click, dobleclick, right click, etc. les coloco una invocación al reset del formulario (aca además puede ya ir fijando el apuntador (ICOno del mouse), imagen si desactivado o activado, etc. ahorra tiempo.
Eso si, cuando agregas un boton a tu formulario (derivado de esa clase base), debes prever que si incorporas codigo propio a dichos eventos, al principio debes disparar un DODEFAULT() para que resetee el timer.
Por ultimo, en el evento activate del formulario, debes incorporar la habilitación del elemento timer y el evento desactivate, debes deshabilitar el evento timer.
Esto último es para que si salis del formulario por que vas a otro, el timer del formulario que queda atras, no siga corriendo y te cierre el formulario que estaba desactivado.
No es dificil (es muy poco código) y es tal vez el mejor ejemplo simple del aprovechamiento de herencia en POO que se puede hacer en VFP.
Saludos: Miguel