有人能指导我找出一个Windows API函数来使用,以拦截在特定窗口上的某个按钮上点击鼠标。我已经使用spy ++了解到,当我将查找工具移动到某个按钮或窗口中的任何东西时,我可以读取有关处理程序和其他信息的信息。那么有没有办法在执行某个动作之前拦截鼠标点击并注入我们的代码。非常感谢您分享任何关于此的想法。拦截窗口鼠标点击
拦截窗口鼠标点击
回答
我能想到的几个不同的方式来处理这个:
您可以使用
SetWindowsHookEx()
安装在目标窗口中的一个WH_CALLWNDPROC
消息钩子线程,然后钩子回调可以在目标窗口的父级上处理窗口消息,如WM_LBUTTON(DOWN|UP)
,或者在目标窗口的父级上处理BN_CLICKED
。需要注意的是回调需要在DLL中实现,因此可以将钩子注入到目标进程中。您可以使用GetWindowThreadProcessId()
获取目标窗口的线程ID。其中的一种变化是让
SetWindowsHookEx()
安装WH_GETMESSAGE
钩子,然后您可以使用PostMessage()
将自定义窗口消息发送到目标窗口。钩子回调然后可以使用SetWindowLongPtr()
或SetWindowSubclass()
来直接对目标窗口和/或其父级进行子类化以用于进一步的消息处理。您可以使用
SetWinEventHook()
来监视EVENT_OBJECT_INVOKED
事件,例如按钮点击。如果使用WINEVENT_OUTOFCONTEXT
标志,则不需要DLL,但需要注意的是安装线程需要一个活动的消息循环,以便跨越流程边界处理事件。
您将需要调用SetWindowsHookEx API来设置窗口挂钩。下面是与源代码的文章,演示其用法:Hooks and DLLs
@RemyLebeau我已经发布了一种方法。如果它与我的不同,请单独发布您自己的答案。 –
- 1. Windows挂钩拦截鼠标点击?
- 2. 抓住/拦截所有鼠标点击
- 3. 如何拦截透明窗口的鼠标事件?
- 4. PostMessage鼠标点击背景窗口
- 5. 当鼠标悬停在控件上时拦截鼠标单击
- 6. 拦截Dock图标点击OSX
- 7. 拦截点击标签小部件
- 8. 鼠标点击特定窗口/背景窗口(nodejs)
- 9. C++ winapi通过鼠标点击子窗口到父窗口
- 10. 拦截点击发送Mail.app
- 11. 手机firefox点击拦截
- 12. Android WebView - 拦截点击
- 13. 拦截html按钮点击
- 14. GTK:在窗口中点击鼠标的共同点
- 15. 拦截单击或双击鼠标 - 仅执行双击代码双击
- 16. Starling禁用鼠标拦截器
- 17. 在windows中拦截鼠标事件
- 18. 拦截出口
- 19. 使用Windows挂钩拦截鼠标点击我的应用程序C++
- 20. window.open与弹出窗口拦截器
- 21. 父窗口拦截加速器
- 22. 全局拦截窗口运动
- 23. 拦截到窗口的按键
- 24. 虚拟鼠标点击被另一个窗口覆盖的窗口
- 25. 窗体忽略一些鼠标点击
- 26. Windows窗体,WPF鼠标点击事件
- 27. 找到哪个MFC子窗口会收到鼠标点击
- 28. 获取点击鼠标按钮的窗口句柄
- 29. 试图发送鼠标点击游戏窗口,mac
- 30. 如何使用Perl在GTK窗口中点击鼠标位置?
这是最好的答案,但它需要代码示例 – FindOutIslamNow