Вот простое решение, чтобы узнать, какие все приложения открыты пользователем. Подход, скажем, заключается в том, что вам придется проверять в цикле, изменилось или нет текущее окно переднего плана. попробуйте сделать это в событии таймера, и если предыдущее имя окна не совпадает с текущим именем окна, вы можете легко рассчитать время, в течение которого пользователь использовал это приложение.
function ActiveCaption: string;
var
Handle: THandle;
Len: LongInt;
Title: string;
begin
result := '';
Handle := GetForegroundWindow;
if Handle <> 0 then
begin
Len := GetWindowTextLength(Handle) + 1;
SetLength(Title, Len);
GetWindowText(Handle, PChar(Title), Len);
ActiveCaption := TrimRight(Title);
end;
end;