PDA

Ver la Versión Completa : ejecutar aplicación cada hora


valera
03-05-2005, 18:16:24
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
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
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
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
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
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