hola.
Yo uso el componente tJvClock, que simula un reloj con alarma, y (en mi caso) tiene las propiedades:
Código Delphi
[-]
Visible := False;
AlarmEnabled := True;
AlarmHour := 1;
AlarmMinute := 0;
AlarmSecond := 0;
Se ejecuta el evento OnAlarm del componente (si la aplicación no se ha cerrado, obviamente)
todos los días a la 1 de la madrugada y actualiza la fecha de trabajo del programa
(y es que hay clientes que se dejan varios días el ordenador encendido con el programa funcionando

)
En el evento OnAlarm, haces lo que consideres.