Oops. My bad. Hook handle is return by SetWindowsHookEx.
Eg.
Code:
LRESULT __stdcall LowLevelKeyboardProc (DWORD code, WPARAM wparam, LPARAM lparam)
{
if (code == HC_ACTION) /* A key was pressed */
{
KBDLLHOOKSTRUCT *hookstruct = (KBDLLHOOKSTRUCT *)lparam;
/* Send key to our main program */
PostMessage (hWnd, WM_U_HOOKMSG, (hookstruct->vkCode << 16) + hookstruct->scanCode, hookstruct->flags);
}
/* Otherwise pass it down... */
return (CallNextHookEx (hookHandle, code, wparam, lparam));
}
where the init call is:
Code:
hookHandle = SetWindowsHookEx (WH_KEYBOARD_LL, (HOOKPROC)&LowLevelKeyboardProc, HInstance, 0);