我想做个东西,把dll注入到另一个进程里面去,从而过滤一下特定的消息。
SetWindowsHookEx(
WH_GETMESSAGE,
(HOOKPROC)FunctionAddress,
ModuleHandle,
dwThreadId
);
我使用上面这个函数的时候碰到几个问题。
第一种解决方案,将dwThreadId=0,也就是定义成全局钩子,但是我希望只有我的目标程序能够加载这个dll(目标程序的名字不一定),其他程序加载这个dll的时候,直接卸载。
第二种解决方案,为dwThreadId设置一个值,我用
获取进程的主线程ID上面的方案获取了要注入的那个进程的mainThreadId,但是SetWindowsHookEx执行失败,错误码87(The parameter is incorrect. )
但是,我把dwThreadId设置为GetCurrentThreadId(),SetWindowsHookEx是执行成功的。
我现在应该怎么处理呢?定义全局钩子的话,如何实现只让目标程序挂上钩子,其他程序不挂?如果是为主线程挂上钩子的话,这个错误码87该怎么解决?