LuckyLuke,
Sorry if I keep repeating my answers, but once again this is something that you could use SetWindowsHookEx in a C++ DLL with a callback to your VB program. The messages that you are going to want to respond to are WM_CREATE, and WM_SHOWWINDOW.
Remember that alot of what you have been trying to do up here is to efficiently monitor the system while it is running. To really do that well, you need to understand how the Windows OS really works . . . almost everything that happens in windows is going to have a message posted to an Event Queue . . . so it only makes sense that the best way to monitor the entire system is by monitoring the event queues. - Jeff Marler B-)