Is AHK taking care of that requirement nicely? Seeing the high bit set (32772 = 4 | 32768) on the return codes is making me suspicious.If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.
Also, on a more minor note that same article names the shell code variable nCode and the variable containing the window handle wParam, which is inconsistent with the variable naming most users are using in their message handlers (wParam, lParam). Again, raises my suspicions that there is some lack of clarity going on here in the AHK-Windows interface.
Anyway, NOT critical stuff, this is all beyond my grade level so please forgive me if I am completely off track here.