Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   actividad en la aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=45804)

Ricardo Alfredo 13-07-2007 21:59:28

actividad en la aplicacion
 
Alguien sabe como puedo detectar si el usuario que esta conectado ha realizado alguna actividad en el sistema.

les explico el problema , hay ocaciones que el usuario se conecta al sistema , realiza diferentes actividades y finalmente se dedica hacer otra cosa, ver el correo, escribir documentos word o simplemente se va a almorzar, todo esto sin salir de la aplicacion por lo tanto sigue conectado pero sin actividad alguna en el sistema.

la idea es colocar algun timer de 15 minutos por ejemplo, en donde si no ha realizado ninguna actividad sacarlo de la aplicacion hacer un quit.

esto porque , en este caso al cliente le cobran por conexion viva en la base datos, entonces hay momentos que sale mucha plata y el usuario simplemente por ejemplo llego en la mañana se conecto y lo llamaron a una reunion sin hacer nada en el sistema todo el dia.

alguna idea se les agradece.

cHackAll 13-07-2007 22:18:45

Caso 1. el usuario se va a la reunion o no hace nada de nada: una aplicacion de Cubre Pantallas que cierre las conexiones activas.

Caso 2. el ususario chatea por Messenger: una aplicacion que verifique cada cierto intervalo el nombre del padre de la ventana activa. Midiendo así implicitamente la inactividad en la ventana que nos interesa.

Ahora podrías medir el uso del micro de un proceso... claro que deberías analizar qué tanto se utiliza para ésto y sacar promedios cada N segundos.

Tampoco descartaría yo la idea del mensaje que tu propones... habría de ver qué se ajusta mas al caso.

Saludos

Ricardo Alfredo 13-07-2007 22:27:05

en el caso 2 estamos hablando que cuando levante la aplicacion "principal", en forma oculta esta "principal" ejecute una segunda que este midiendo la actividad de la otra ?

cHackAll 13-07-2007 23:42:31

Puedes hacerlo de ésa forma (que el usuario lo ejecute), en el inicio, desde el registro o como servicio (no es el tema), la idea es que tu aplicacion de monitoreo esté verificando todo el tiempo el nombre de la ventana que esté en primer plano (enfocada).

roman 13-07-2007 23:54:02

¿No podría hacerse así?

1. Tomas la hora actual y la guardas.

2. Cada tanto, un timer compara la hora actual con la que guardaste. Si la diferencia es mayor al tiempo máximo de inactividad permitido, cierras la aplicación.

3. Cada vez que la aplicación recibe un evento del ratón o del teclado, reinicias la cuenta volviendo a grabar la hora actual. Los eventos los puedes monitorear con un objeto ApplicationEvents y su evento OnMessage.

// Saludos

cHackAll 14-07-2007 00:17:23

Cita:

Empezado por roman
...Los eventos los puedes monitorear con un objeto ApplicationEvents y su evento OnMessage.

Es cierto! se me olvidó preguntar si el "sistema" al que se "conecta" el usuario esta desarrollado Ricardo Alfredo o es un programa ejecutable comprado (por ejemplo). :p

roman 14-07-2007 00:21:48

Ja, y a mi se me olvidó pensar en esa posibilidad :D Di por sentado que él la programaba, pero bien puede ser de terceros.

// Saludos

gabrielkc 14-07-2007 16:07:53

Si el programa está desarrollado por tí y usas una BD, existe una propiedad que se llama IDLE Time, al pasar dicho tiempo muerto la BD se desconecta en el evento OnDisconnect del Database podrías hacer el logout de tu aplicacion o bien cerrarla


La franja horaria es GMT +2. Ahora son las 16:04:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi