2个回答
展开全部
取桌面窗口句柄,
GetDesktopWindow();
通过 SetWindowsHookEx 挂窗口函数钩子(WH_CALLWNDPROC),可以在网上搜搜挂窗口钩子的方法,很多。
或者,如果你会线程注入的话(CreateRemoteThread)也可以,在桌面窗口所在的进程空间创建一个线程,拷贝一个窗口处理函数进去,通过SetWindowLong()修改桌面窗口的窗口处理函数为你注入的窗口处理函数,这样也可以拦截,WM_xx消息。这个稍显复杂,不过能研究透对学习很有帮助
再者,可以通过非正常手段,挂函数钩子。也是注入桌面窗口所在进程后,找到其WndProc的函数地址,直接在函数入口处修改。或者修改线程的PreTranslateMessage 函数入口点数据,拦截 MSG*数据
GetDesktopWindow();
通过 SetWindowsHookEx 挂窗口函数钩子(WH_CALLWNDPROC),可以在网上搜搜挂窗口钩子的方法,很多。
或者,如果你会线程注入的话(CreateRemoteThread)也可以,在桌面窗口所在的进程空间创建一个线程,拷贝一个窗口处理函数进去,通过SetWindowLong()修改桌面窗口的窗口处理函数为你注入的窗口处理函数,这样也可以拦截,WM_xx消息。这个稍显复杂,不过能研究透对学习很有帮助
再者,可以通过非正常手段,挂函数钩子。也是注入桌面窗口所在进程后,找到其WndProc的函数地址,直接在函数入口处修改。或者修改线程的PreTranslateMessage 函数入口点数据,拦截 MSG*数据
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询