Setting WH_KEYBOARD hook fails with error 1428
这是我的C ++代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> #include <windows.h> HHOOK hook; LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam) { std::cout <<"Hook callback" << std::endl; return CallNextHookEx(hook, nCode, wParam, lParam); } int main(int argc, char **argv) { hook = SetWindowsHookEx(WH_KEYBOARD, keyboardHook, NULL, NULL); if (hook == NULL) { std::cout <<"Error" << GetLastError() << std::endl; return 1; } std::cout <<"Hook set" << std::endl; } |
我使用Visual Studio像这样编译它:
1 | cl /D_WIN32_WINNT=0x0401 foo.cc /link user32.lib |
运行它时,出现错误1428。
1 2 | C:\\>foo.exe Error 1428 |
这是错误1428的含义。
1 2 3 4 | C:\ ocaps>net helpmsg 1428 Cannot set nonlocal hook without a module handle. |
您能否帮助我理解此错误并使此代码正常工作? 如果您能为我提供一个可以正常工作并调用回调的代码,那就太好了吗?
我看到如果我改用WH_KEYBOARD_LL钩子,则可以正常工作。 但是我需要了解如何使WH_KEYBOARD挂钩正常工作。
注意:在钩子线程的上下文中执行的钩子函数使所有