当前线程的SetWindowsHookEx返回null

时间:2014-03-14 13:22:26

标签: windows winapi

我在尝试为当前线程获取键盘钩子时遇到问题。 首先,我需要为所有线程获取键盘输入,所以我使用了:

hHook = SetWindowsHookEx(WH_KEYBOARD_LL, mKeyboardProc, GetModuleHandle(NULL), 0);

这很好,但是当我尝试将dwThreadId参数(最后一个)设置为GetCurrentThreadId()时,SetWindowsHookEx返回NULL。

可能是什么问题? 感谢。

1 个答案:

答案 0 :(得分:4)

WH_KEYBOARD_LL是一个全局钩子,如documentation中所述。这意味着您必须传递0作为线程ID参数。

documentation所述,如果您拨打GetLastError,可以自己诊断出来。这将返回错误代码ERROR_GLOBAL_ONLY_HOOK此挂钩程序只能全局设置。