Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ejecutar aplicación cada hora (https://www.clubdelphi.com/foros/showthread.php?t=21002)

valera 03-05-2005 18:16:24

ejecutar aplicación cada hora
 
Hola foro, espero que me puedan ayudar, estoy haciendo un sistema para un centro de computo y el rrollo es el siguiente:El centro empieza a dar servicio a partir de las 7 de la mañana, todos los usuarios reservan las pc´s por una hora, entonces cuando sean a las 8,9,10,11,etc en punto, el sistema tiene que cerrar todas las aplicaciones abiertas y deshabilitar los iconos del escritorio y mostrar la ventanita de acceso para que los usuarios que están trabajando nuevamente se registren.
cabe mencionar que en el momento de encender las maquinas y despues de cargar el S.O automaticamente se ejecuta la aplicación para que el usuario registre sus datos,ahora despues de que éste se resgistró,el sistema se minimiza en la barra de tareas, es decir que unavez encendida la maquina el sistema siempre va a estar en ejecución y cada vez que se llegue la hora el sistema se muestra.
Lo estoy intentando con timer pero todavia no encuentró como hacerle para que se visualize a la cada hora, tomando en cuenta que todas las maquinas se prenden exactamente a las 7. Por ejemplo un usuario puede encender la maquina 7:30 y a las 8 el sistema ya debe de deshabilitar todo.
Espero que alguien del foro me pueda ayudar y gracias.

jafl1965 03-05-2005 19:42:29

Te servirá el programador de tareas de Windows?
O en su defecto, con el timer ir leyendo la hora del sistema y si se cumple tu condición entonces haces lo que necesitas.

Crandel 04-05-2005 02:09:29

Hola, podes cada un minuto ir controlando la hora del sistema.
El timer tiene su intervalo en milisegundos, asi que debe valer 60000.
La hora la podes preguntar con la función "time" (creo que llamaba asi).
Luego tenes la funcion DecodeTime que te devuelve la hora,min y seg.
Chaqueas que haya pasado una hora de la ultima vez y listo

Suerte

Lepe 04-05-2005 10:42:29

Código Delphi [-]

NextAlert := RecodeTime(Now, Hourof(now)+1,0,0,0); // a la hora siguiente en punto 
Faltan := millisecondsBetween(NextAlert, Now);
if faltan >0 then
begin
  timer1.interval := faltan;
  timer1.Enabled := true;
end

Creo que las rutinas estan en la unidad DateUtils.

Un saludo

razek 05-05-2005 22:22:07

Talves pueda funcionarte esto tambien.
 
Puedes poner una condicion como la siguiente
if ((TimeToStr(Time)='08:00:00 a.m.') or (TimeToStr(Time)='09:00:00 a.m.') or (TimeToStr(Time)='10:00:00 a.m.') or (TimeToStr(Time)='11:00:00 a.m.')or (TimeToStr(Time)='12:00:00 p.m.')) then {... Codigo que desees ejecutar}
Solo agrega las demas horas que quieras.


Bueno ojala esto pueda servir ;)

bye

valera 06-05-2005 16:34:09

Hola lepe
 
Disculpa que te moleste una vez mas, el codigo que me sugeriste efectivamente me da la siguiente hora en punto, pero ahora como le hago para comparar esta hora hora con la del sistema. Por tu ayuda muchas gracias

Crandel 06-05-2005 18:10:39

Dentro del codigo que te escribio arriba razek (esta la comparación) y yo tambien te lo comente arriba, la función Time es la que te devuelve la hora del sistema.

Tené cuidado con la expresión de arriba, porque es dependiente de la configuración de la hora de la maquina. dado que a veces te devuelve la hora en formato de 24hs.

El otro inconveniente, es que es muy improbable que tu expresión se ejecute exactamente en cada hora, salvo que tu expresión la evalues cada medio segundo, lo cual es un desperdicio, para ejecutar un accion que se realiza una ves por hora.

Suerte

valera 07-05-2005 03:39:36

Ya encontré la solucion, gracias
 
Por todo su ayuda gracias, nada mas le quiero pedir otro favor si saben algo o tienen idea acerca de como cerrar varias aplicaciones abiertas desde delphi.

Lepe 07-05-2005 17:11:59

Cita:

Empezado por Crandel
El otro inconveniente, es que es muy improbable que tu expresión se ejecute exactamente en cada hora, salvo que tu expresión la evalues cada medio segundo, lo cual es un desperdicio, para ejecutar un accion que se realiza una ves por hora.

Si el código fuera en Visual Basic, entonces estaría de acuerdo contigo. Pero como trabajamos en delphi, me alegra decirte que mi ejemplo establece el timer para cuando sea necesario (un solo timer y de golpe), y se ejecutará exactamente a la hora en punto.

Si windows está "agobiado" puede demorarse unos milisegundos hasta que se desahogue un poco, pero en cuanto pueda, lanzará el código del timer.

Valera te sugiero, que estudies todo el código propuesto, es como se aprende, ya que la función Now, que he usado varias veces en mi ejemplo, te devuelve la fecha y hora del sistema, y de hecho, es mejor siempre trabajar con formato de fecha y hora que con horas solamente.

Un saludo


La franja horaria es GMT +2. Ahora son las 09:00:22.

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