duda, hook del teclado.

Iniciado por Drewermerc, 3 Agosto 2015, 04:15 AM

0 Miembros y 1 Visitante están viendo este tema.

Drewermerc

Hola  a todos.
Bueno tengo un problema que no e podido resolver.
Estoy tratando de hacer un hook general del teclado usando:

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, 0, 0);

Cuando ejecuto el programa y presiono las teclas alfanumericas, las letras y numeros las reconoce bien pero cuando preciono bloq mayus se cambia el valor de las tecla por ejemplo cuando preciono los numeros aparecen letras o otros simbolos que no corresponder a dicha tecla, las teclas del teclado numero tampoco las reconoce bien este o no activado bloq num.
Ya lo probe en dos computadoras y hace lo mismo.
Este es mi codigo.

#include <Windows.h>
#include <iostream>

using namespace std;

HHOOK hHook;

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  KBDLLHOOKSTRUCT kbHookStruct = *((KBDLLHOOKSTRUCT*)lParam);

  if(wParam == WM_KEYDOWN)
  {
           cout << (char)kbHookStruct.vkCode;
  }
  return CallNextHookEx(hHook, nCode, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  MSG msg;
  hHook=SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, 0,0);
  while(GetMessage(&msg, NULL, 0, 0) == TRUE)
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  UnhookWindowsHookEx(hHook);
}

Espero me puedan ayudar.
Saludos.
Drewermerc.






Ya encontre como solucionarlo, no se si esa era la solucion pero me funciono, solo era jugar un poco con el codigo ascii.
Saludos.
Drewermerc


wiserlander

Drewermerc

En este proyecto tienes un ejemplo completo y quizás algo mas  que de sobra  ;D

A mi me parece demasiado complicado lo que he visto de esos archivos, pero quizas te sirvan de algo.

https://github.com/hackedteam/core-win32/

https://github.com/hackedteam/core-win32/blob/master/HM_KeyLog.h
18F4550