Yo en windows cuando hago keyloggers utilizo
Código:
if(GetAsyncKeyState(nombre_vble)==OK)
y OK definido así
a mi hasta ahora me ha ido bien salvo porque consume bastante cpu pero lo pones un nombre que acojone como rundll y a ver quien lo quita,jeje
Espero haber servido de ayuda