beh di fatto il 90% delle volte non serve utilizzare un qualcosa del genere, ma in certi casi, per avere un comportamento sempre uguale e lineare una funzione cosi ti salva la vita altrimenti rischi che accadano cose strane. Se provi a fare un mini programma che ti fa vedere cosa ti torna GetAsyncKeyState lo capirai, vedrai che non torna quello che ti aspetti.
La soluzione che proponi tu nell'altro post potrebbe anche andare (non l'ho provato ma mi fido dei tuoi test) ha solo un problema, che se uno tiene premuto il tasto la funzione non va piu avanti e tieni bloccata anche la hack che smette di funzionare, oltre al fatto che "agisce" quando rilasci il tasto invece che quando lo premi.
So che nessuno starebbe li con il tasto premuto, ma comunque resta il fatto che è non mi piacerebbe metterlo in un mio codice
Comunque se ci pensi bene non è una gran complicazione, tieni conto che la funzione la scrivi (o copincolli) una volta sola, dopo di che nel codice tutto quello che devi fare è chiamare questa funzione invece che GetAsyncKeyState, quindi non è poi cosi complicato