GetAsyncKeyState funziona benissimo anche se l'applicazione/Form non ha il focus o addirittura se la tua applicazione è invisibile! (almeno con vb.net)