Hallo!
Hier mal ein Denkanstoß, wobei ich jetzt keine Diskussionen über die EXAKTE Genauigkeit auslösen möchte

Für den Zweck müsste es reichen... GetTickCount() rechnet übrigens in Milisekunden. Die Onlinehilfe leistet dir vielleicht auch noch einen Beitrag.
2. Möglichkeit wäre einen Timer zu nehmen mit Intervall = 1000 (= 1 Sekunde). GaugeMax auf gewünscht Sekunden setzen und beim OnTimer-Event Gauge1.Progress um eines erhöhen. Dann im gleichen Event schauen ab PercentDone = 100 -> Timer.enabled auf false setzen Windows herunterfahren.
Die erste Möglichkeit habe ich Dir mal schnell geschrieben:
Delphi-Quellcode:
var
sekunden : Integer;
aktuell : Integer;
[...]
sekunden := 3; // Anzahl Sekunden zum zählen
aktuell := gettickcount(); // Zeitstempel in Sekunden
Gauge1.MaxValue := aktuell + (Sekunden*1000); // Ende der Berechnung
Gauge1.MinValue := aktuell; // Aktueller Zeitstempel
repeat
Gauge1.Progress := gettickcount(); // Gauge brechnet aus dem max. und dem min. Wert die Prozente automatisch, wenn der aktuelle Wert zugewiesen wird (gauge1.percentDone, s. unten).
Application.ProcessMessages; // sonst wirds nicht angezeigt...
until gauge1.PercentDone = 100; // Fertig, wenn 100% erreicht
// Hier Windows runterfahren...
Wenn Du alles in Sekunden umrechnest, dann ist die Animation nicht so "flüssig", man kann aber die Sekunden auch visuell wahrnehmen - auch nicht schlecht
Grüsse,
SCRaT