Just a quick note - it DID work as it should in the first place, only you didn't know that EnumWindows enumerates hidden windows too...
Yeah, I thought EnumWindows only enumerate the visible windows. I guess I should have said, "It's working as I want it to" =))
Here is the definition of EnumWindows from MSDN:
The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window, in turn, to an application-defined callback function. EnumWindows continues until the last top-level window is enumerated or the callback function returns FALSE.
I guess I mis-understood top-level windows.
So what is top-level windows then?