"s'arrete par interruption [...] comme en assembleur"
Errfff. Pas sûr que ça fonctionne encore comme ça en 32 bit.
Fais un hook, je ne vois pas d'autre solution.
"dans mon main() une boucle infinie"
C'est impensable. Une boucle infinie te bouffera 100% de ton CPU en permanence.
Il faut passer en GUI.
Prend exemple sur une des sources sur ce site:
http://www.cppfrance.com/codes/HOOK-GLOBAL-SANS-DLL_27169.aspx
http://www.cppfrance.com/codes/DETOURNER-FRAPPE-CLAVIER_43964.aspx
C++ (@++)