Yes, that's the only way that I'm aware of.
But you have to handle the fact that GFW can return NULL. Typically, this happens when another desktop (e.g. the screen saver desktop) is active. Note that use of a saver password can affect whether a different desktop is used (this is windows version-dependent and I can't remember the details of how different versions work).
Also this code won't work properly in debug mode under Visual Studio, because you will get VS's window handle.
Other than that everything's peachy :-)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…