PDA

Ver la Versión Completa : Registrar aplicación para recibir mensaje de reloj


Lord Delfos
02-02-2008, 21:24:19
Hola, gente.

¿Sabe alguien si se puede registar un programa para que Windows envíe un mensaje cuando ocurran eventos con el tiempo?

Estoy haciendo un programita que queda corriendo en la SysTray. Cada 10 minutos tiene que revisar algunas cosas.

Ahora bien. Yo estoy seguro que existe una función de la API que me permite registrar el programa para que Windows le envíe un mensaje sobre eventos del reloj...

Estoy seguro que la he usado en alguna oportunidad. Pero hace días que vengo buscando y nada. O mi cerebro tiene un puntero a nil o realmente esto existe pero no lo puedo encontrar.

Ahora estoy usando un TTimer para contar 10 minutos... pero no me gusta mucho la idea, la verdad.

Si alguno sabe, se lo agradecería enormemente.

Saludongos y ¡gracias!

Lepe
02-02-2008, 22:36:57
Un TTimer encapsula las llamadas a la api de Windows, por tanto, ambos serán igual de precisos.

Saludos.

aeff
03-02-2008, 18:50:50
y si no te gusta la idea de usar un Timer entonces usa la API: *SetTimer*, mira un ejemplo de como yo la usaria:


procedure TimerFunc(phWnd, pMsg, pidEvent, pTime: Cardinal); stdcall;
begin
ShowMessage('Diablos! Esto se ha ejecutado en diez minutos.');
KillTimer(phWnd, pidEvent); {termino, para que no se ejecute mas}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Handle, 1, 10 * 1000 , @TimerFunc); {Aqui, 10 * 1000 significa que son 10 minutos ¿ok? }

end;


que crees?!

dec
03-02-2008, 18:58:12
Hola,


{Aqui, 10 * 1000 significa que son 10 minutos ¿ok? }


Serán segundos. ;)

Lepe
03-02-2008, 20:56:15
Mira la implemntación del TTimer ¿qué api usa? ;) :D

Saludos

Lord Delfos
03-02-2008, 23:07:17
¡Gracias gente!

Es verdad lo que decís, Lepe. Es bastante irónico que el TTimer haga justamente lo que yo hubiera jurado que NO hacía y que quería hacer...

... Al final existía la función... Yo no estoy loco, qué alivio...

Les agradezco la ayuda aunque, por lo que se ve, es lo mismo un TTimer que una llamada a la API...

Gracias de nuevo.

alquimista
03-02-2008, 23:10:44
En la VCL de Proyecto JEDi (Componentes delphi gratuitos) hay un componente que te puede venir al pelo.

Se llama JvThreadTimer Una tarea con temporizador. Utilizas la propieda Interval con el tiempo por ejemplo 10 segundos Interval:=10000;

Y luego utilizas el evento JvThreadTimer1.Ontimer para poner tu código.
Muy fácil.
Espero que sea eso lo que buscas.:)

Lord Delfos
03-02-2008, 23:28:00
Gracias, alquimista. Lo voy a probar... Lo que pasa es que sigue siendo un timer y no me gusta mucho porque... bueno, porque soy un quejón :p

Igualmente le voy a hacer un vistazo. Gracias.

aeff
04-02-2008, 03:54:14
gracias dec, por la rectificación, es verdad que son segundos,

saludos