Página 1 de 1

Detectar Inactividad

Publicado: Lun Dic 21, 2009 10:11 am
por ssi-estono-
Me gustaría conseguir que cuando mi aplicación (Ordenador) este unos minutos
inactiva se lance un formulario.
¿Se puede hacer de alguna forma?
Gracias.
Paco V

Detectar Inactividad

Publicado: Lun Dic 21, 2009 8:19 pm
por Jesus Semper
Con simple TTimer (pestaña Sistema)
"Paco V." <ssi-estono-@ono.com> escribió en el mensaje
news:4b2f3baa$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Me gustaría conseguir que cuando mi aplicación (Ordenador) este unos
> minutos inactiva se lance un formulario.
>
> ¿Se puede hacer de alguna forma?
>
> Gracias.
>
> Paco V
>

Detectar Inactividad

Publicado: Lun Dic 21, 2009 9:17 pm
por emeasoft
Jesus:
Para teste tentei criar o objeto TTimer conforme exemplo abaixo.
Mas, dispara o evento apenas uma vez.
Como fazer para o temporizador ficar disparando a cada segundo?
Para probar he intentado crear el objeto TTimer como el ejemplo a
continuación.
Pero dispara el evento de una sola vez.
¿Cómo obtener el temporizador de disparo cada segundo?
METHOD FormShow( oSender ) CLASS TForm1
WITH OBJECT TTimer():Create()
:SetInterval(1000)
:lEnabled := .T.
:OnTimer(::oLabel1:cText:=STR(Seconds()))
::oLabel1:Show()
END
RETURN Nil
Saludos!
Mário Angelini
www.eMeAsOfT.com
http://emeasoft.blogspot.com/
http://twitter.com/emeasoft

Detectar Inactividad

Publicado: Lun Dic 21, 2009 11:04 pm
por ssi-estono-
Ojala fuera tan sencillo.
El tema es como saber que no han realizado ninguna acción, como mover el
raton, situarse sobre un boton sin pulsar, etc.
Claro, se podria poner que el timer se reiniciara cada vez que pulso en un
boton, pero la pantalla tiene como 100 botones distintos y con eventos
distintos.
Algo mas general sobre el formulario,......
Gracias por vuestra ayuda.
Paco V
"Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
news:[email=4b2fd7fa@svctag-j7w3v3j....]4b2fd7fa@svctag-j7w3v3j....[/email]
> Jesus:
>
> Para teste tentei criar o objeto TTimer conforme exemplo abaixo.
> Mas, dispara o evento apenas uma vez.
> Como fazer para o temporizador ficar disparando a cada segundo?
>
>
> Para probar he intentado crear el objeto TTimer como el ejemplo a
> continuación.
> Pero dispara el evento de una sola vez.
> ¿Cómo obtener el temporizador de disparo cada segundo?
>
>
> METHOD FormShow( oSender ) CLASS TForm1
>
> WITH OBJECT TTimer():Create()
> :SetInterval(1000)
> :lEnabled := .T.
> :OnTimer(::oLabel1:cText:=STR(Seconds()))
> ::oLabel1:Show()
> END
>
> RETURN Nil
>
>
> Saludos!
> Mário Angelini
> www.eMeAsOfT.com
> http://emeasoft.blogspot.com/
> http://twitter.com/emeasoft
>
>
>

Detectar Inactividad

Publicado: Mar Dic 22, 2009 4:07 pm
por jlalin
Paco,
> Me gustarí­a conseguir que cuando mi aplicación (Ordenador) este unos minutos
> inactiva se lance un formulario.
Sí­, es posible hacerlo. Luego lo busco y te lo enví­o para que lo pruebes.
Saludos,
José Lalí­n

Detectar Inactividad

Publicado: Mar Dic 22, 2009 6:55 pm
por Jesus Semper
Tienes razon, es mas complicado de lo que parece a primera vista.
He estado leyendo un poco del API de Windows y existe una funcion llamada
GetMesage que lo que hace es recuperar un mensaje de la lista de mensajes.
Por otro lado cuando se pulsa una tecla se coloca un mensaje WM_KEYDOW y
cuando se mueve el raton otro de tipo WM_MOUSEMOVE. (Esto lo he sacado de un
fichero que me baje de internet llamado "WinAPI5n.pdf")
Sin tener nada claro como se gestiona eso, creo que la solucion pasara por
llamar (no se como) a la funcion GetMessage y evaluar si en la lista hay uno
de tipo WM_KEYDOW (el usuario habra tecleado algo) o WM_MOUSEMOVE (el
usuario habra movido el raton) y en ese salir del timer sin hacer nada. Si
no hay un mensaje de ninguno de estos 2 tipos, lanzar el Form que desees
presentar.
De todos modos esto lo tiene que corroborar alguien que de verdad entienda
del API de Windows.
"Paco V." <ssi-estono-@ono.com> escribió en el mensaje
news:4b2ff103$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ojala fuera tan sencillo.
>
> El tema es como saber que no han realizado ninguna acción, como mover el
> raton, situarse sobre un boton sin pulsar, etc.
> Claro, se podria poner que el timer se reiniciara cada vez que pulso en un
> boton, pero la pantalla tiene como 100 botones distintos y con eventos
> distintos.
> Algo mas general sobre el formulario,......
>
> Gracias por vuestra ayuda.
>
> Paco V
>
> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
> news:[email=4b2fd7fa@svctag-j7w3v3j....]4b2fd7fa@svctag-j7w3v3j....[/email]
>> Jesus:
>>
>> Para teste tentei criar o objeto TTimer conforme exemplo abaixo.
>> Mas, dispara o evento apenas uma vez.
>> Como fazer para o temporizador ficar disparando a cada segundo?
>>
>>
>> Para probar he intentado crear el objeto TTimer como el ejemplo a
>> continuación.
>> Pero dispara el evento de una sola vez.
>> ¿Cómo obtener el temporizador de disparo cada segundo?
>>
>>
>> METHOD FormShow( oSender ) CLASS TForm1
>>
>> WITH OBJECT TTimer():Create()
>> :SetInterval(1000)
>> :lEnabled := .T.
>> :OnTimer(::oLabel1:cText:=STR(Seconds()))
>> ::oLabel1:Show()
>> END
>>
>> RETURN Nil
>>
>>
>> Saludos!
>> Mário Angelini
>> www.eMeAsOfT.com
>> http://emeasoft.blogspot.com/
>> http://twitter.com/emeasoft
>>
>>
>>
>
>

Detectar Inactividad

Publicado: Mié Dic 23, 2009 2:04 pm
por ignacio
Paco,
Lo más sencillo es que sólo controles el MouseMove del formulario principal.
En dicho formulario reseteas una variable estática, en el timer la
incrementas y cuando sobrepasa el valor que tu quieras disparas lo que
quieres y vuelves a resetear la variable.
Saludos,
"Paco V." <ssi-estono-@ono.com> escribió en el mensaje de
noticias:4b2ff103$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ojala fuera tan sencillo.
>
> El tema es como saber que no han realizado ninguna acción, como mover el
> raton, situarse sobre un boton sin pulsar, etc.
> Claro, se podria poner que el timer se reiniciara cada vez que pulso en un
> boton, pero la pantalla tiene como 100 botones distintos y con eventos
> distintos.
> Algo mas general sobre el formulario,......
>
> Gracias por vuestra ayuda.
>
> Paco V
>
> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
> news:[email=4b2fd7fa@svctag-j7w3v3j....]4b2fd7fa@svctag-j7w3v3j....[/email]
>> Jesus:
>>
>> Para teste tentei criar o objeto TTimer conforme exemplo abaixo.
>> Mas, dispara o evento apenas uma vez.
>> Como fazer para o temporizador ficar disparando a cada segundo?
>>
>>
>> Para probar he intentado crear el objeto TTimer como el ejemplo a
>> continuación.
>> Pero dispara el evento de una sola vez.
>> ¿Cómo obtener el temporizador de disparo cada segundo?
>>
>>
>> METHOD FormShow( oSender ) CLASS TForm1
>>
>> WITH OBJECT TTimer():Create()
>> :SetInterval(1000)
>> :lEnabled := .T.
>> :OnTimer(::oLabel1:cText:=STR(Seconds()))
>> ::oLabel1:Show()
>> END
>>
>> RETURN Nil
>>
>>
>> Saludos!
>> Mário Angelini
>> www.eMeAsOfT.com
>> http://emeasoft.blogspot.com/
>> http://twitter.com/emeasoft
>>
>>
>>
>
>

Detectar Inactividad

Publicado: Mié Dic 23, 2009 5:49 pm
por ssi-estono-
Gracias a Todos por vuestra Ayuda.
Me lo ha solucionado JJ, con un simple onChangeFocus.
Dado que es un formulario lleno de Botones y de paneles.
Si hay algo mejor,....
Gracias a todos y Feliz Navidad.
Paco v
"Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> escribió en el
mensaje news:4b3215ea$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Paco,
>
> Lo más sencillo es que sólo controles el MouseMove del formulario
> principal. En dicho formulario reseteas una variable estática, en el timer
> la incrementas y cuando sobrepasa el valor que tu quieras disparas lo que
> quieres y vuelves a resetear la variable.
>
> Saludos,
>
> "Paco V." <ssi-estono-@ono.com> escribió en el mensaje de
> noticias:4b2ff103$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ojala fuera tan sencillo.
>>
>> El tema es como saber que no han realizado ninguna acción, como mover el
>> raton, situarse sobre un boton sin pulsar, etc.
>> Claro, se podria poner que el timer se reiniciara cada vez que pulso en
>> un boton, pero la pantalla tiene como 100 botones distintos y con eventos
>> distintos.
>> Algo mas general sobre el formulario,......
>>
>> Gracias por vuestra ayuda.
>>
>> Paco V
>>
>> "Mário Angelini" <mario@emeasoft.com.br> escribió en el mensaje
>> news:[email=4b2fd7fa@svctag-j7w3v3j....]4b2fd7fa@svctag-j7w3v3j....[/email]
>>> Jesus:
>>>
>>> Para teste tentei criar o objeto TTimer conforme exemplo abaixo.
>>> Mas, dispara o evento apenas uma vez.
>>> Como fazer para o temporizador ficar disparando a cada segundo?
>>>
>>>
>>> Para probar he intentado crear el objeto TTimer como el ejemplo a
>>> continuación.
>>> Pero dispara el evento de una sola vez.
>>> ¿Cómo obtener el temporizador de disparo cada segundo?
>>>
>>>
>>> METHOD FormShow( oSender ) CLASS TForm1
>>>
>>> WITH OBJECT TTimer():Create()
>>> :SetInterval(1000)
>>> :lEnabled := .T.
>>> :OnTimer(::oLabel1:cText:=STR(Seconds()))
>>> ::oLabel1:Show()
>>> END
>>>
>>> RETURN Nil
>>>
>>>
>>> Saludos!
>>> Mário Angelini
>>> www.eMeAsOfT.com
>>> http://emeasoft.blogspot.com/
>>> http://twitter.com/emeasoft
>>>
>>>
>>>
>>
>>