PDA

Ver la Versión Completa : Salida automatica de aplicación


creus
10-12-2006, 21:30:01
Necesitaria saber si hay alguna instrucción especifica para que, al cabo de unos segundos determinados sin que hayamos tocado ni el teclado ni el ratón, la aplicación se cierre automaticamente.


Gracias a todos.

Albano
10-12-2006, 21:45:48
Si, pon un timer y en su evento "ontimer" pon el siguiete código:
tuforma.close;
asi cierras la forma en determinado tiempo...
La propiedad "interval" del timer es un entero, cada unidad es un milisegundo, si quieres que dure 5 segundos abierta tu forma, ponle 5000 a esa propiedad.

seoane
10-12-2006, 21:52:09
Me surgen un par de dudas que necesitaría que me aclarases para saber como enfocar la respuesta. Lo primero, los movimientos de ratón y teclado ¿son solo sobre nuestra aplicación o en cualquier aplicación de Windows?. Lo segundo, si el ratón se mueve, pero sin realizar ninguna acción ¿se tiene también en cuenta?.

dec
10-12-2006, 21:53:15
Hola,

Hasta donde llego tendrías que "inventarte algo". ¿Necesitas que la inactividad del ratón y el teclado sea para tu aplicación o también para el resto del sistema? Es decir, ¿la aplicación debe cerrarse tras cinco segundos sin pulsar una tecla o mover el ratón "encima" de tu aplicación o en cualquier otra?

dec
10-12-2006, 22:01:05
Hola,

Iba a poner el 1-0 de rigor, pero veo que tendría que poner algo como 1-0-0... :D :D :D

seoane
10-12-2006, 22:21:48
Iba a poner el 1-0 de rigor, pero veo que tendría que poner algo como 1-0-0...


:D ¿y para quien es el 1? :mad: ¿por que no me pondrás a mi el 0?

Bueno, de todas formas parece que a creus le sirvió la respuesta de Albano, :( o es que no quiere respondernos. Yo que ya tenia un poco de codigo ...

dec
10-12-2006, 22:29:45
Hola,

El cero era para ti... lo mismo que para mí... aquí los partidos (que alguien me corrija) se juegan por tiempo.

El más rápido en contestar es el que se apunta el tanto, así que ya lo sabes. Albano is the winner. :D :D :D

Albano
10-12-2006, 22:36:06
:D:D:D:D:D Estoy aprendiendo... eso creo jaja.

dec
10-12-2006, 22:37:21
Hola,

:D:D:D:D:D Estoy aprendiendo... eso creo jaja.

¡Bienvenido al Club! :)

creus
10-12-2006, 22:38:45
Respondiendo a Seone y a Dec, sí tenemos que tener en cuenta si movemos el ratón, y solo es de nuestra aplicación, no tiene que ser de cualquiera de windows.

Disculparme pero el tema del rigor 1-0-0, no lo he entendido para nada...

Los domingos por la tarde es lo que tienen...

Gracias de nuevo

Albano
10-12-2006, 22:42:41
Supongo que con lo que te di al inicio podría hacerse, solo que es necesario poner algunas condiciones para activar y desactivar el timer que te mencioné... Pero tal vez seoane o dec tienen una mejor respuesta.

P.D. Canté victoria antes de tiempo...

Sudamericano
10-12-2006, 23:34:52
Esto es un concurso de Atletismo?? el que responde primero suma un punto, vale las respuestas que hace "Dec" que mas que respuesta repite las preguntas, se deberia tomar las cosas con mas seriedad, y dejar de intentar figurar dentro del foro, la filosofia deberia ser ayudarnos mutuamente y no estar en concurso absurdos.

dec
10-12-2006, 23:39:29
Hola,

Por favor, ¡si lo único que quería era poner un poco de sentido del humor! Y no es la primera vez que se hace... ¡ni espero sea la última!

dec
10-12-2006, 23:41:41
Hola,

Y, por otro lado, ¿quién eres tú Sudamericano para decidir la filosofía que ha de seguirse en estos Foros? ¿Propones que quitemos del medio Foros como el de Humor y La taberna? Y por alusiones, ¿te refieres a mí cuando dices que se busca figurar en estos Foros? Pues sabe que te equivocas de principio a fin.

Albano
10-12-2006, 23:42:33
Ademas estamos contestando la pregunta que se hizo (o sea que estamos ayudando), ahora resulta que no podemos hacerlo con un podo de humor...

seoane
10-12-2006, 23:43:04
Esto es un concurso de Atletismo?? el que responde primero suma un punto, vale las respuestas que hace "Dec" que mas que respuesta repite las preguntas, se deberia tomar las cosas con mas seriedad, y dejar de intentar figurar dentro del foro, la filosofia deberia ser ayudarnos mutuamente y no estar en concurso absurdos.

:confused: :eek: ¿Y quien es el que decide la calidad de las respuestas? ¿tu?

Yo no sabia que estaba bajo reglamento militar. Yo pensaba que si me apetecía hacer un comentario gracioso, siempre que no estuviera fuera de lugar, lo podía hacer. Perdona si te molesto, no te preocupes que en ningún hilo tuyo voy a contestar nada ...

seoane
10-12-2006, 23:56:07
Volviendo al tema que plantea Creus. En este otro hilo se planteo algo parecido, solo que en vez de cerrar la aplicación se desconectaba de la base de datos, pero cambiando una instrucción por otra debería servir.

http://www.clubdelphi.com/foros/showthread.php?t=783

Como ves en el hilo se presentan varias formas de hacerlo, con el evento OnIdle, interceptando los mensajes y usando hooks. Este ultimo se mostró como el mas efectivo, aunque yo he tenido problemas para utilizar el hook de ratón a nivel de aplicación. Tampoco esta mal el método de interceptar mensajes aunque ya ves que da problemas con los menús.

Si quieres te puedo pasar el código para hacer un hook a nivel global. Supongo que podríamos comprobar si es nuestra aplicación es la que esta activa. Es una idea, si los métodos anteriores no te sirven podemos intentarlo con este, pero por ahora prueba con los otros.

dec
10-12-2006, 23:56:37
Hola,

Bueno. Pues no me quedo a gusto. Quiero pedir disculpas al compañero Sudamericano. Le pido disculpas porque el humor puede ser como los gustos: que no hay libro que los defina, que cada cual tiene los suyos y los distingue como le viene en gana.

Ya una vez Sudamericano y yo chocamos con el mismo tema, y así, no puede ser que siempre lleve yo la razón. Le pido disculpas, pues. Debe ser que el estar cierto tiempo en el ClubDelphi da pie a ciertas confianzas, a ciertos chascarrillos, a ciertas salidas, que bien pueden no ser entendidas y más aún tal vez no tengan sentido salvo para quien las hace.

A lo mejor, pues, es menester ahorrar comentarios superfluos. Dedicarme (puesto que hablo por mí) a ser todo lo escueto que pueda y preciso en mis siempre humildes respuestas, etc. Para evitar este tipo de altercados, que al cabo al cabo no es lo que se pretendía cuando Creus inició este Tema.

Y yendo al tema, por cierto, he de decir que he hecho algunas pruebas pero infructuosas... desde luego me pareció al principio más sencillo de lo que ahora me lo parece. Pido disculpas también por esto. Y ya me callo, para no permitir que el mucho hablar haga que me equivoque de nuevo.

Sudamericano
11-12-2006, 00:44:23
ustedes creen que un programador profesional o por lo menos que intente llegar a serlo, toma las cosas al juego con bromas ?? creen que con bromas podran inplementar metodologias de desarrollo com CMMI, RUP y otros ?? !bueno yo creo que no!, ahora aclaro a mi tambien me gustan las bromas, pero todo en su momento y en su lugar.

este foro es uno de los mejores si no el mejor en DELPHI, porque no trazarnos la meta de "ser el mejor foro", con algun reconocimiento de revistas especializadas o cosas por el estilo ??, pero con bromas fuera de lugar se podra??,, lo veo dificil.

Un niño se ahoga en el mar, que harias le cuentas un chiste primero luego lo ayudas ??? ese seria la metodologia ??

El que tenga oidos que oiga, un autocritica nunca esta de mas.

Sudamericano
11-12-2006, 00:48:17
puedo responder ?? o va a bloquear mis respuestas porque no comparto la forma infantil de participar en estos foros ??

Sudamericano
11-12-2006, 00:51:03
Cmmi, Rup
ustedes creen que un programador profesional o por lo menos que intente llegar a serlo, toma las cosas al juego con bromas ?? creen que con bromas podran inplementar metodologias de desarrollo com CMMI, RUP y otros ?? !bueno yo creo que no!, ahora aclaro a mi tambien me gustan las bromas, pero todo en su momento y en su lugar.

este foro es uno de los mejores si no el mejor en DELPHI, porque no trazarnos la meta de "ser el mejor foro", con algun reconocimiento de revistas especializadas o cosas por el estilo ??, pero con bromas fuera de lugar se podra??,, lo veo dificil.

Un niño se ahoga en el mar, que harias le cuentas un chiste primero luego lo ayudas ??? ese seria la metodologia ??

El que tenga oidos que oiga, un autocritica nunca esta de mas.

Albano
11-12-2006, 03:11:27
Con todo respeto Sudamericano, creo que tu reacción es exagerada, todo este relajo por el simple comentario de 1-0-0? Eso es algo que a mi en lo personal, me causó gracia y me animó a seguir contestando (es de las primeras veces que puedo sentir que ayudo en este foro)... Creo que eso es lo que hace a este foro el mejor de Delphi, la manera en que nos comunicamos y la confianza que hay... También creo que tus respuestas Sudamericano, nos desviaron mas del tema que el simple comentario que hizo dec.
A mi me gusta el estilo que tiene dec en sus respuestas.

Sudamericano
11-12-2006, 07:27:18
La unica intención que tengo con mis comentarios es fomentarles mayor profesionalismo, mayor seriedad en el desarrollo del software, y de alguna manera en este foro, seguro no tengo ningún derecho de hacerlo pues participo muy poco en realidad, pero cuando lo hago procuro dar soluciones concretas, por otro lado la disciplina y seriedad los llevara lejos , no tengo idea de las edades de ustedes ni si se dedican a tiempo completo al desarrollo de software, pero les deseo de corazon que tomen las cosas con mayor seriedad y podran llegar muy lejos. seguro yo aprendere de ustedes tanto como ustedes de mi persona.

creus
11-12-2006, 09:43:16
Acabo de leer el "enfrentamiento" entre Albano y Sudamericano.
Me siento en cierta medida culpable por el tono que ha cojido una simple duda mia sobre Delphi de una parte de aplicación que tengo que desarrollar y que me cuesta a horrores hacerlo. Por eso me siento obligado a opinar.

Yo no soy profesional del software. He ingresado en el foro por recomendación de mi profesor, y mis dos únicos objetivos son: ayudar y que me ayuden.
El generar alguna tipo de discusión, por llamarlo de alguna manera, creo que esta fuera de lugar de cualquier foro que se precie.
Sudamericano, aprecio tu querer profesionalizar las respuestas pero no todos los que componemos este foro lo somos. Y que no seamos profesionales no quiere decir que tengamos 15 años (sin menospreciar a esa edad ). El didactismo o lo docencia, muchas veces adquiere dinamismo e interés con un poco de "alegria".
De todas maneras de tu intervención seguro que todos sabemos extraer algo, incluso que el tono utilizado no es el adecuado, y si un poco excesivo.

Siento lo extenso de mis palabras.

Gracias a todos de nuevo.

Neftali [Germán.Estévez]
11-12-2006, 11:11:46
...se deberia tomar las cosas con mas seriedad, y dejar de intentar figurar dentro del foro, la filosofia deberia ser ayudarnos mutuamente y no estar en concurso absurdos.

Una respuesta muy osada por tu parte (41), refiriendote a David (dec) (4.959) y Seoane (1.260). Es más, independientemente de números, si llevaras un tiempo por aquí, sabrías que estas dos personas distan mucho (pero que mucho) de ser "figurantes" en este foro.

...con algun reconocimiento de revistas especializadas o cosas por el estilo ??

No es esa mi intención en este foro; Personalmente el reconocimiento de revistas especializadas "me la bufa". Mi idea aquí es ayudar a otras personas, como en su día me ayudaron a mi desinteresadamente (y me siguen ayudando).

...seguro no tengo ningún derecho de hacerlo pues participo muy poco en realidad, pero cuando lo hago procuro dar soluciones concretas...

Al contrario, tienes todo el derecho de hacerlo; El mismo que cualquier otro. Aquí cada uno hace las cosas "a su manera" (siempre con respeto, eso sí).

La unica intención que tengo con mis comentarios es fomentarles mayor profesionalismo, mayor seriedad en el desarrollo del software,...por otro lado la disciplina y seriedad los llevara lejos,...

Me parece bien, pero estás mezclando cosas; Los comentarios que se hacen en estos foros (en los que normalmente impera el buen humor -y personalmente así me gusta que sea-) no tienen nada que ver con la profesionalidad de cada uno de nosotros al programar y la seriedad de nuestros proyectos profesionales.

Solo busco Profesionalismo

Creo que profesionalismo vas a encontrar mucho por aquí; Otra cosa es que nos tomemos las cosas con alegría y buen humor; Si buscas eso, también lo encontrarás por aquí; Y el día que no sea así, tal vez el que no se encuentre por aquí sea yo. 8 o 9 horas al día delante de un ordenador, para luego meterte aquí y no poder hacer una broma, creo que va a ser demasiado para mí...

Un saludo.

seoane
11-12-2006, 13:36:49
Bueno, parece que se diluyo un poco la pregunta de Creus. En la respuesta numero 17, te comente en que otro hilo podías encontrar información y si eso no te servía, te ofrecía otra linea a seguir. Pero como no has comentado nada, no se si lo has llegado a leer :confused: o si te sirvió y ya has resuelto tu problema.

Neftali [Germán.Estévez]
11-12-2006, 14:14:22
puedo responder ?? o va a bloquear mis respuestas porque no comparto la forma infantil de participar en estos foros ??

Por cierto, que yo sepa eso nunca se ha hecho aquí; Puedes dar tu popinión siempre que quieras, estés o no de acuerdo.
Siempre que se hagan las cosas con respeto, no veo inconveniente.

Neftali [Germán.Estévez]
11-12-2006, 14:17:48
Necesitaria saber si hay alguna instrucción especifica para que, al cabo de unos segundos determinados sin que hayamos tocado ni el teclado ni el ratón, la aplicación se cierre automaticamente.


Creo que la opción del Timer que te han dado es la correcta.
Coloca un Timer, con un Intervalo segun el tiempo de inactividad que necesites;

Con el siguiente código puedes detectar la actividad de teclado oratón y en consecuencia "resetear" el timer:


// RATON
if (Msg.message = WM_MOUSEMOVE) then begin
--> Aquí "resetea el TIMER"
end
// TECLAS
else begin
// Pulsada tecla...
if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP) or
(Msg.message = WM_SYSKEYDOWN) or (Msg.message = WM_SYSKEYUP) or
(Msg.message = WM_ACTIVATE) or (Msg.message = WM_NCACTIVATE) or
(Msg.message = WM_ACTIVATEAPP) or
(Msg.message = WM_LBUTTONDOWN) or
(Msg.message = WM_RBUTTONDOWN) or (Msg.message = WM_MBUTTONDOWN) then begin
--> Aquí "resetea el TIMER"
end;
end;


Necesitas colocar un componente ApplicationEvents en tu form principal, y en el evento OnMessage colocar este código.

Neftali [Germán.Estévez]
11-12-2006, 14:26:28
Creo que con un ejemplo se ve más claro.
A ver si esto lo que necesitas.

seoane
11-12-2006, 14:33:48
Hola Neftali, tu ejemplo esta muy bien, pero tiene el mismo problema que encontraron en el hilo anterior. Si un usuario se esta moviendo por el menú de la aplicación, los eventos del ratón no se disparan. Así que si un usuario se entretiene, moviéndose por los menús puede que se le cierre la aplicación.

seoane
11-12-2006, 14:58:18
Hoy debo de estar dormido, acabo de borrar un mensaje en el que hablaba de fechas y demás. No se en que estaba pensando, pero lo que si es verdad es que a veces tu ejemplo Neftali no se para al llegar a cero, sino que comienza a contar hacia adelante. supongo que es algún problema con la comparación:


if ((_af - _ah) <= 0) then begin


Aunque no veo cual puede ser el fallo.

Edito:
Si coloco esto:

if ((_af - _ah) <= _ad) then
begin
Windows.Beep(500,100);
Application.Terminate;
end;


Al terminar la cuenta, se comienzan a oir los pitido pero la aplicacion no se cierra :eek: . Esto solo pasa si estoy viendo alguno de los menus de la aplicacion, ¿La instruccion Application.Terminate no funciona si esta abierto el menu? Ahora si que estoy desconcertado.

Neftali [Germán.Estévez]
11-12-2006, 17:41:18
En cuanto al primer IF no he conseguido que me pase.
En el segundo estoy igual que tú. Un poco (bastante) sorprendido. He probado con el menú y efectivamente, si estás "paseando" por el menú ignora el Terminate/Close.

En algun lugar debe estar "comiendose" esos mensajes.
Cuando tenga un rato me lo miro. Si descubrís algo más, comentadlo aquí; Ya es tema de curiosidad.