Du könntest das zu startende Programm mit ShellExecute und WaitForSignleObject ausführen (Forensuche hilft). Dann hast du den Zeitpunkt des start und des Ende des Prozesses.
Delphi-Quellcode:
saveTime('Start');
ShellExecuteWait(...)
saveTime('Stop')
Gruß Björn