Да, это единственный способ, который я знаю.
Но вы должны учитывать тот факт, что GFW может вернуть NULL. Как правило, это происходит, когда активен другой рабочий стол (например, рабочий стол с заставкой). Обратите внимание, что использование пароля заставки может повлиять на использование другого рабочего стола (это зависит от версии Windows, и я не могу вспомнить подробности того, как работают разные версии).
Также этот код не будет работать должным образом в режиме отладки в Visual Studio, потому что вы получите дескриптор окна VS.
Кроме этого все персиковое: -)