For detecting start of process, I use loop: While 1 If (ProcessExists("SomeThing.exe")) Then _DoSomeThing() Sleep(100) WEnd This consumes not much, but some CPU time. Is there any else, less consuming possibility?