PDA

Ver la Versión Completa : Cerrar ventana a los 10 min. de inactividad


jamonete2
09-06-2005, 17:47:45
Hola a todos,
tengo un programilla y quiero que si en 10 minutos nadie toca ni el teclado ni el raton se apague. He mirado con el ttimer pero no tiene en cuenta si se mueve el raton.
Tambien me gustaria me comentarais si hay algun componente que muestre en pantalla un teclado, para poder escribir con el raton.
Salu2 a todos

roman
09-06-2005, 19:04:50
No sé qué tal funcione pero puedes probar esto.

En el timer comparas la hora actual con la última hora de actividad, Si la diferencias es mayor de la tolerada cierras la ventana.

Por otra parte colocas una componente ApplicationEvents (paleta "Additional") y en su evento OnMessage pones:



if
((Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST))
or
(Msg.message >= WM_KEYFIRST) and (Msg.message <= WM_KEYLAST)
then
begin
(*
Aquí reinicias la cuenta
*)
end;


El condicional te dice si se ha recibido algún mensaje del teclado o del ratón.

La segunda pregunta nada tiene que ver con la primera así que será mejor que abras otro hilo para ella.

// Saludos

jamonete2
09-06-2005, 19:28:28
Muchas gracias, aunque veo que me he dejado varios detalles importantes.
Primero uso delphi 4 ya que es el que utilizamos aqui. En este compilador no aparece el Aplication event que me comentas. Se puede bajar como componente para añadir?
El procedimiento que me da la ultima hora de actividad cual es??

roman
09-06-2005, 19:42:44
En este compilador no aparece el Aplication event que me comentas. Se puede bajar como componente para añadir?


No es necesario. A falta de la componente declara el siguiente método en la clase de tu formulario:


type
TForm1 = class(TForm)
private
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
end;


Y en el constructor del formualrio pones:

Application.OnMessage := AppMessage

En la implementación de AppMessage pones lo que iba en el evento.


El procedimiento que me da la ultima hora de actividad cual es??


No es un procedimiento. Usa una variable global en donde guardes la hora actual. Esta variable la inicializas en el constructor del formulario con la función Time() y la actualizas cada vez que recibas un evento del teclado o del ratón (método AppMessage).

// Saludos

jamonete2
10-06-2005, 18:18:53
Muchas gracias roman. Probare esto que hasta ahora no he podido.
Espero no postear mas que para decir que va perfecto.