C++ 拦截windows鼠标单击
有没有人能指导我找到一个WindowsAPI函数来拦截鼠标点击某个特定窗口上的某个按钮。我使用了spy++并了解到,当我将finder工具移动到按钮或窗口中的任何东西上时,我能够读取有关处理程序和其他东西的信息。所以,在执行某些操作之前,有没有一种方法可以拦截鼠标点击并注入我们的代码呢。非常感谢您分享有关这方面的任何想法 您需要调用API来设置windows挂钩。下面是一篇包含源代码的文章,演示了它的用法:我可以想出几种不同的方法来实现这一点:C++ 拦截windows鼠标单击,c++,winapi,hook,spy++,C++,Winapi,Hook,Spy++,有没有人能指导我找到一个WindowsAPI函数来拦截鼠标点击某个特定窗口上的某个按钮。我使用了spy++并了解到,当我将finder工具移动到按钮或窗口中的任何东西上时,我能够读取有关处理程序和其他东西的信息。所以,在执行某些操作之前,有没有一种方法可以拦截鼠标点击并注入我们的代码呢。非常感谢您分享有关这方面的任何想法 您需要调用API来设置windows挂钩。下面是一篇包含源代码的文章,演示了它的用法:我可以想出几种不同的方法来实现这一点: 您可以使用在目标窗口的线程中安装WH_CALLWN
WH_CALLWNDPROC
消息钩子,然后钩子回调可以在目标窗口本身上处理窗口消息,如WM|LBUTTON(DOWN | UP)
,或在目标窗口的父窗口上单击BN_
。需要注意的是,回调需要在DLL中实现,以便可以将钩子注入目标进程。您可以使用获取目标窗口的线程ID
另一种方法是让setwindowshookx()
安装WH\u GETMESSAGE
钩子,然后您可以使用将自定义窗口消息发布到目标窗口。然后,钩子回调可以直接使用或子类化目标窗口和/或其父窗口,以进行进一步的消息处理
事件\u对象\u调用的事件
事件,例如按钮单击。如果使用WINEVENT\u OUTOFCONTEXT
标志,则不需要DLL,但需要注意的是,安装线程需要活动的消息循环,以便跨进程边界处理事件
@雷米尔博我已经发布了一种方法。如果你的答案与我的不同,请分别发布你自己的答案。这是最好的答案,但需要代码示例