sysexecute should always work. It does for me but I am always on trunk. But my class should work cross platform. (It does) Note it is also documented so it is part of FPC 3.2.2 classes too.
The class is a simple extension to TProcess that does some timing.
The first time the event is fired means the program is fully loaded.
So it can even be simpler.
Maybe you are confused: it is TThread.SysExecute, there is no sysexecute on its own.
(For good measure, I analysed the sourcecode for what it actually does and in what order)