Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Registrar aplicación para recibir mensaje de reloj (https://www.clubdelphi.com/foros/showthread.php?t=52881)

Lord Delfos 02-02-2008 21:24:19

Registrar aplicación para recibir mensaje de reloj
 
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:

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

Cita:

Empezado por aeff
{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

Puedes usar un componente de JEDI
 
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


La franja horaria es GMT +2. Ahora son las 16:57:32.

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