hola:
Te cuento cómo lo hice:
* Tengo un timer en el menú principal seteado en un segundo, en el evento timer puse el siguiente código:
Código COBOL:
if caduce-habilita = pow-true
add 1 to caduce-seg
if caduce-seg >= caduce-tiempo
move pow-false to "active" of tmrCaduce
invoke pow-self "callform" using "usu99" "usuarios.dll"
if caduce-seg not = zeros
invoke pow-self "closeform"
end-if
move pow-true to "active" of tmrCaduce
end-if
end-if
compute caduce-falta = caduce-tiempo - caduce-seg
tengo variables globales external que están dentro de un "copy" en todos los forms.
Código COBOL:
01 variables-caduce global external.
02 caduce-cuenta pic x(10).
02 caduce-nom pic x(30).
02 caduce-clave pic x(10).
02 caduce-tiempo pic 9(4).
02 caduce-seg pic 9(4).
02 caduce-falta pic 9(4).
02 caduce-habilita pic s9(5) comp-5.
02 caduce-notiempo pic 9.
y en los eventos Prekeypress y Click de todos los formularios:
Código COBOL:
move zeros to caduce-seg.
Paso a explicar un poco.
La variable "caduce-habilita" la utilizo para habilitar o deshabilitar la función, porque cuando el usuario está realizando un proceso y éste es largo no quiero que se le corte.
"caduce-seg" es la variable donde voy contando los segundos que van pasando y "caduce-tiempo" tiene la cantidad de segundos totales que le permito de inactividad.
Cuando se cumple ese tiempo, llamo a un form para que vuelva a colocar la contraseña, si ésta falla se cierra el sistema.
Y lo que falta es en los eventos Prekeypress y Click de todos los forms, poner en cero "caduce-seg" para que cuando presione cualquier tecla o haga click comience de nuevo a contar el tiempo.
Espero haber sido claro.
Saludos.
Fito...