Jak wykryć uruchamianie się nowego okna (procesu) i dać mu atrybut zawsze na wierzchu (StayOnTop) tak,aby wszystkie uruchomiające się procesy miały taki atrybut?

Stosuje metodę:

procedure PokazOkna;
var
i:integer;
begin
HandleList.Clear;
GetProcessList; (Wymaga procedury WinApi o pobieraniu uchwytów)
for i := 0 to HandleList.Count - 1 do
begin
SetWindowPos(StrToInt(HandleList.Strings[i]), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); // zmiana okna na zawsze na wierzchu
end;
end;

Ale ta procedura zamienia wszystkie okna na StayOnTop (zawsze na wieszchu) i je sortuje co ustalony czas,a jak to zrobić co uruchomienie procesu (i nie wszystkich okien tylko uruchamianego)?