¿Cuantas veces nos hemos encontrado que nuestros usuarios se van a tomar un cafe o marchan a comer con la aplicación abierta?
La verdad, es que a mi esto me há dado bastantes problemas, ya que realizo las copias de seguridad al mediodia. Y día si, día también hay usuarios que dejan la aplicación abierta, con el problema de que la copia no se realiza ya que los usuarios dejan archivos abiertos.
La solución es la siguiente:
crear un timer (p.ejemplo) programado para 15-20 minutos, y el el evento timer programar los pasos necesarios para cerrar la aplicación.
para que el timer no se dispare cuando los usuarios estan trabajando hago lo siguiente:
En el evento mouse move del formulario y en el keypress de cada objeto, hago:
IF VARTYPE(gotimer_inactividad)="O" * la cuenta atras de tiempo se inicia otra vez gotimer_inactividad.interval = gocsapp.tiempo_espera ENDIF
En mi caso la parte del formulario la hago solo una vez, ya que todos mis formularios son hijos de uno maestro definido como una clase base.
¿Que codigo se pone para cerrar la aplicación? Depende de lo que desees hacer, es decir puedes no querer cerrar a un usuario si esta en el medio de una grabación,... yo en mi caso les cierro la aplicación descartando cualquier cambio que hayan realizado.
¿Drastico? Si, pero despues de que los usuarios pierden su trabajo dos veces, debido a su negligencia, os aseguro que no volveran a dejar el ordenador indebidamente encendido.
NOTAS:
gotimer_inactividad - es el objeto timer creado al iniciar la aplicación gocsapp - es una clase general a todas las aplicaciones que desarrollo, tiene propiedades y metodos habituales. gocsapp.tiempo_espera - define el tiempo de espera para lanzar el timer. Es por si aumento o disminuyo el tiempo de espera para no tener que cambiarselo a todos los objetos. Normalmente ahi le pongo 900000
Pablo Roca