How can I detect if a new program is loaded ???

I make a program to see all the openned APP in windows..
For the moment, I make a timer whit the code in...
the timer refresh the list but each time, the computer load a lot ...

so if I have a code to only refresh the list when a program is openned/closed, It will help me a lot