看到一个键盘钩子的回调函数如下:
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”。
本文解析了一个键盘钩子回调函数,并详细解释了lParam参数的作用,尤其是lParam的最高位用于区分键盘按下与释放状态。

5253

被折叠的 条评论
为什么被折叠?



