看到一个键盘钩子的回调函数如下:
LRESULT CALLBACK LaunchHook(int nCode, WPARAM wParam, LPARAM lParam)
{
LRESULT Result = CallNextHookEx(kbHook, nCode, wParam, lParam);
if (nCode == HC_ACTION)
{
if (lParam & 0x80000000)
{
TCHAR c[1];
c[0] = wParam;
SaveLog(c);
}
}
return Result;
}
对其中的lParam & 0x80000000不理解,在网上搜索了一下,解释是lParam的最高位为1代表键盘Up,0代表键盘down,最终我还是在msdn中找到了详细解释:
lParam的各位信息:
而Transition-state flag的详细解释如下:
Transition-State Flag
The transition-state flag indicates whether pressing a key or releasing a key generated the keystroke message. This flag is always set to 0 for WM_KEYDOWN and WM_SYSKEYDOWN messages; it is always set to 1 for WM_KEYUP and WM_SYSKEYUP messages.
关于更多信息,大家可以参考msdn的“About Keyboard Input”。