首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >截取窗口鼠标点击

截取窗口鼠标点击
EN

Stack Overflow用户
提问于 2017-02-15 02:41:02
回答 2查看 1.9K关注 0票数 2

有人能引导我找出一个windows函数来拦截鼠标点击特定窗口上的某个按钮。我使用了间谍++,并了解到当我将查找器工具移动到窗口中的按钮或任何东西时,我能够读取有关处理程序和其他东西的信息。那么在执行某些操作之前,是否有一种方法可以拦截鼠标单击并注入我们的代码。非常感谢大家分享关于这方面的任何想法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-15 06:05:49

我可以想出几种不同的方法来解决这个问题:

  1. 您可以使用SetWindowsHookEx()在目标窗口的线程中安装WH_CALLWNDPROC消息钩子,然后钩子回调可以处理目标窗口本身的WM_LBUTTON(DOWN|UP)或目标窗口父窗口的BN_CLICKED之类的窗口消息。警告是回调需要在DLL中实现,这样钩子就可以注入到目标进程中。您可以使用GetWindowThreadProcessId()获取目标窗口的线程ID。 这方面的一个变化是让SetWindowsHookEx()安装一个WH_GETMESSAGE钩子,然后可以使用PostMessage()将自定义窗口消息发布到目标窗口。然后,钩子回调可以使用SetWindowLongPtr()SetWindowSubclass()直接子类目标窗口和/或其父窗口,以进行进一步的消息处理。
  2. 您可以使用SetWinEventHook()监视EVENT_OBJECT_INVOKED事件,例如按钮单击。如果使用WINEVENT_OUTOFCONTEXT标志,则不需要DLL,但请注意,安装线程需要一个活动消息循环,以便跨进程边界处理事件。
票数 3
EN

Stack Overflow用户

发布于 2017-02-15 02:48:32

您需要调用windows来设置SetWindowsHookEx钩子。下面是一篇带有源代码的文章,演示了它的用法:钩子和DLL

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42239779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档