Hola estoy intentando capturar combinaciones de teclas con un hook en windows y me pasa esto:
KBDLLHOOKSTRUCT *data = (KBDLLHOOKSTRUCT*)lparam;
int i = 1 << data->flags;
si pulso Alt Gr i contiene 2 y data->flags 129
Pero luego aquí
KBDLLHOOKSTRUCT *data = (KBDLLHOOKSTRUCT*)lparam;
int i = 1 << 129;
i contiene 0 :(
data->flags es un DWORD (unsinged long) por esto probe hacer una conversión aunque creo que da igual.
KBDLLHOOKSTRUCT *data = (KBDLLHOOKSTRUCT*)lparam;
int i = 1 << (DWORD)129;
El i sigue 0.
Porque pasa esto?
Saludos
estás desplazando 129 veces 1 a la izquierda. ¿Es eso lo que quieres hacer? ¿No será al revés?
En realidad lo que quiero es comprobar si esta activo el 5 byte que ya lo hice de otra forma pero el problema esta en que el i es diferente dependiendo si uso data->flags que vale 129 y lo pongo como constante y no se porque.
Cita de: patilanz en 17 Enero 2015, 17:17 PMPorque pasa esto?
Un int (Dword) son 4 bytes - 32 bits, y tu estas moviendo a la izquierda 129, como veras eso se pasa de los 32 asi que todo sera 0.
Igualmente no se a que viene lo del byte numero 5, si estas con un int, si quires comparar bytes siempre tienes AND.
Un saludo.
Luego lo hice con AND pero quería probar otra cosa que no tiene relación.
CitarUn int (Dword) son 4 bytes - 32 bits, y tu estas moviendo a la izquierda 129, como veras eso se pasa de los 32 asi que todo sera 0.
Vale y porque si utilizo para mover el contenido
data->flags que en el debugger de pone que vale 129 me devuelve 2 ?
Como quieres que sepa lo que hace el debugger si no lo veo?
Un saludo.