If you want to set up a kind of callback whenever one process is created, you should have a look at PsSetCreateProcessNotifyRoutineEx and the userCreateProcessNotifyEx. The PS_CREATE_NOTIFY_INFO-struct contains information about the app-name (ImageFileName) or even its path (see Link for more information).
To remove the callback simply set the second parameter of PsSetCreateProcessNotifyRoutineEx to TRUE.
Up-sides: Besides the installation of WDK not much to implement.
Down-sides:
You need the Windows Driver Kit (WDK) and a copy of VisualC++. (header-files)
You can only install a certain amount of hooks (64) --> should be enough
Use of a callback attached at driver level for filename.
Alternatives:
EnumWindow()-call in with worker-thread/timer-function.