Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Salida automatica de aplicación (https://www.clubdelphi.com/foros/showthread.php?t=38298)

creus 10-12-2006 21:30:01

Salida automatica de aplicación
 
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:
Código Delphi [-]
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

Cita:

Empezado por dec
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,

Cita:

Empezado por Albano
: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

Respuestas tontas
 
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

Cita:

Empezado por Sudamericano
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

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.

Sudamericano 11-12-2006 00:48:17

Repuesta
 
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
 
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

Solo busco Profesionalismo
 
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

Cita:

Empezado por Sudamericano
...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.

Cita:

Empezado por Sudamericano
...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).

Cita:

Empezado por Sudamericano
...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í).

Cita:

Empezado por Sudamericano
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.

Cita:

Empezado por Sudamericano
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

Cita:

Empezado por Sudamericano
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

Cita:

Empezado por creus
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:

Código Delphi [-]
  // 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

1 Archivos Adjunto(s)
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:

Código Delphi [-]
  if ((_af - _ah) <= 0) then begin

Aunque no veo cual puede ser el fallo.

Edito:
Si coloco esto:
Código Delphi [-]
  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.


La franja horaria es GMT +2. Ahora son las 11:50:15.

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