haber ... yo entendi justamente todo lo contrario ... que parta desde 0 hasta el infinito ... en ese caso, la solución sería la siguiente:
1.- cuando se te inicia el programa (evento OnCreate del Form principal), verificas qué hora es y la guardas en una variable global.
2.- Pones un timer, y cada 1 seg (o 1000 mseg), verificas qué hora es.
3.- Sacas la diferencia y...
4.- Ya tienes el tiempo que se ha estado ejecutando tu programa.
GetTickCount sirve para ver cuánto rato ha estado prendido el PC, (Hasta donde sé, nunca lo he confirmado), pero no para ver cuánto rato ha estado tu aplicación en uso.
Para lo otro, o sea, el formato, creo que cuando lo conviertes a string, le pones el formato, por ejemplo
Código Delphi
[-]
datetostr('hh:mm:ss:zzz',now);
No estoy seguro, pero creo que así era.