In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Detectar Inactividad
-
- Mensajes: 239
- Registrado: Sab Ene 24, 2009 8:23 pm
Detectar Inactividad
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
inactiva se lance un formulario.
¿Se puede hacer de alguna forma?
Gracias.
Paco V
-
- Mensajes: 54
- Registrado: Lun Ene 04, 2010 2:40 pm
Detectar Inactividad
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
>
"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
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
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
-
- Mensajes: 239
- Registrado: Sab Ene 24, 2009 8:23 pm
Detectar Inactividad
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
>
>
>
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
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
> 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
-
- Mensajes: 54
- Registrado: Lun Ene 04, 2010 2:40 pm
Detectar Inactividad
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
>>
>>
>>
>
>
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
>>
>>
>>
>
>
- ignacio
- Site Admin
- Mensajes: 9441
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Detectar Inactividad
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
>>
>>
>>
>
>
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
>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 239
- Registrado: Sab Ene 24, 2009 8:23 pm
Detectar Inactividad
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
>>>
>>>
>>>
>>
>>
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
>>>
>>>
>>>
>>
>>