我在尝试为当前线程获取键盘钩子时遇到问题。 首先,我需要为所有线程获取键盘输入,所以我使用了:
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, mKeyboardProc, GetModuleHandle(NULL), 0);
这很好,但是当我尝试将dwThreadId参数(最后一个)设置为GetCurrentThreadId()时,SetWindowsHookEx返回NULL。
可能是什么问题? 感谢。
答案 0 :(得分:4)
WH_KEYBOARD_LL
是一个全局钩子,如documentation中所述。这意味着您必须传递0
作为线程ID参数。
如documentation所述,如果您拨打GetLastError
,可以自己诊断出来。这将返回错误代码ERROR_GLOBAL_ONLY_HOOK
,此挂钩程序只能全局设置。