Código: Seleccionar todo
/***********************************
* Coder: Linkgl *
* Thanks: The swash *
* Exaple for hooks WH_KEYBOARD_LL *
* (LowLevel) *
***********************************/
#include <windows.h>
#include <stdio.h>
//declaramos el hook publico
HHOOK hHook;
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//llamamos a la estructura y la hacemos puntero para lParam
KBDLLHOOKSTRUCT kbHookStruct = *(KBDLLHOOKSTRUCT*)lParam;
//PKDLLHOOKSTRUCT *kbHookStruct = (PKBDLLHOOKSTRUCT *)lParam;
if(nCode < 0) //si es menor a 0 pasamos al siguiente hook
return CallNextHookEx(0, nCode, wParam, lParam);
if(wParam == WM_KEYDOWN) //Si se detecto pulsacion de tecla
printf("%s", (char *)&kbHookStruct.vkCode); //imprimimos convirtiendo a char *
return CallNextHookEx(0, nCode, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
//seteamos el hook
hHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,GetModuleHandle(NULL),0);
//Bucle de mensajes que usamos en las winapi
while(TRUE==GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//eliminamos el hook
UnhookWindowsHookEx(hHook);
}