当前线程的SetWindowsHookEx返回null

我有一个问题试图获取当前线程的键盘钩子。 首先,我需要获得所有线程的键盘input,所以我使用:

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

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

可能是什么问题呢 ? 谢谢。

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

您可以根据文档描述自己诊断出您称为GetLastError 。 这将返回错误代码ERROR_GLOBAL_ONLY_HOOK这个钩子程序只能在全局设置。