Code:
LRESULT CALLBACK lowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
static bool bIsShiftDown = false;
PKBDLLHOOKSTRUCT p;
if (nCode == HC_ACTION)
{
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
p = (PKBDLLHOOKSTRUCT)lParam;
if (p->vkCode == 160)
bIsShiftDown = true;
break;
case WM_KEYUP:
case WM_SYSKEYUP:
p = (PKBDLLHOOKSTRUCT)lParam;
printf("Pressed Button with vkCode: %d\n", p->vkCode);
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
And Setup this Hook:
Code:
static HHOOK hhkLowLevelKybd;
DWORD __stdcall keyboardMonitor(LPVOID pParam)
{
hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, lowLevelKeyboardProc, 0, 0);
MSG msg;
while (!PeekMessage(&msg, NULL, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
Sleep(1);
}
return 1;
}
That's it.