FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Application.Terminate
Hola Amigos hace mucho tiempo que no venia por aqui, bueno les contare que tengo una aplicacion multiusuario , que hace varias cosas... bueno el punto es que en ocasiones los usuarios dejan sus pantallas en las que estan trabajndo abiertas, lo que quiero es que pasado un tiempo de inactividad , el sistema termine la aplicacion o en todo caso bloquee la aplicacion en la que esta trabajndo hasta que se registre denuevo....
la idea es esa.... hay algo parecido en power builder... creo que en delphi tambien se puede hacer... trabajo en Delphi 7.0 gracias |
#2
|
|||
|
|||
puedes usar la funcion getlastinputinfo que devuelve el tiempo que ha transcurrido desde que se produjo la ultima pulsacion de teclado o movimiento de raton.
Pon un timer que en su evento OnTimer revise el tiempo que lleva inactiva la aplicacion mediante esta funcion y que si es superior al que tu le indiques cierras la aplicacion. Saludos. |
#3
|
|||
|
|||
Ok lo probare
nunca pense que fuera tan facil
gracias... |
#4
|
|||
|
|||
En que unidad está la función 'getlastinputinfo' , o cuales son los parametros que recibe y lo que devuelve.
Saludos. |
#5
|
|||
|
|||
esta es la pagina del msdn donde se explica detalladamente esta funcion
http://msdn.microsoft.com/library/de...tinputinfo.asp |
#6
|
|||
|
|||
Lo he intentado pero no logro comprender el sentido de esta funcion. b siempre da resultado 1 y c es como el interval siempre da un número en decremento, pero no se como obtener el tiempo desde que se pulsó una tecla o el ratón. Gracias anticipadas. |
#7
|
||||
|
||||
Pues yo tampoco sé muy bien donde usarlo.
He añadido un ApplicationsEvents (en delphi 6) y en los eventos Activate y Desactivate he añadido este código:
LAST es una variable global de la unidad, y sí efectivamente da los valores correctos, es decir, pones en marcha el programa, te vas a otro programa y despues vuelves, y en el label te aparece el tiempo de inactividad que ha pasado (en milisegundos). El problema es buscar donde poner ese código, evidentemente en el Activate no nos sirve, en el OnIdle del ApplicationsEvents, tampoco, ya que ese evento se produce entre ciclos muy cortos, y obtenemos siempre un cero Dentro de un Timer tampoco, ya que el timer está ejecutando código, por tanto la aplicación no está realmente parada. Con ayuda de este club lo implementamos de esta otra forma: Esta solución está más que probada y funciona Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
|||
|
|||
Con la ayuda de todos, creo que he conseguido lo que quería.Gracias.
Tiempo es una variable global a la unidad. interval = 1sg. transcurrido 5 sg. si no se ha pulsado tecla o movimiento del ratón, la aplicación termina.
|
|
|
|