我正在尝试安装一个钩子来拦截从库到可执行文件的鼠标和键盘。如果我将库构建为动态加载库,一切正常,但是当我将库构建为静态库时,它不起作用。
要安装钩子我喜欢这样:
使用此函数获取库模块句柄
HMODULE GetCurrentModule()
{
return reinterpret_cast<HMODULE>(&__ImageBase);
}
安装钩子
HMODULE module = GetCurrentModule();
_windowsProcHook = SetWindowsHookEx(WH_CALLWNDPROC, WindowsProcCallback, module, NULL);
我已经调试了代码,我已经看到当构建为DLL时,我从GetCurrentModule
获取的模块是正确的(来自DLL),但是当我构建为静态库时{ {1}}返回我的可执行文件的模块。