问题标签 [mouse-hook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 鼠标挂钩,仅在单击按钮时响应
我开发了响应低级鼠标点击的 C# 应用程序。我用鼠标钩来做到这一点。该应用程序运行良好,每当我单击任何窗口时,它都会响应并执行某些任务。但我想在这里做一个修改。每当单击窗口上的任何按钮时,我都想响应鼠标单击。如果我单击窗口的普通区域,它不应该响应。目前它会响应我点击的任何地方。我找不到如何识别我是否点击了按钮。
这是我的代码:
请帮我解决这个问题。谢谢你。
c++ - 在鼠标钩子代码中调用方法会导致访问冲突
我有一个低级鼠标钩子,我试图用它来处理全局左键单击事件。我在一个基本的主窗体类中定义了钩子,如下所示:
我的鼠标钩子可以很好地检测到左键单击,但是当我尝试获取我的句柄时,我MainForm
遇到了访问冲突。
我最初认为这可能是因为我试图在TMainForm
类中检索句柄,而实际上在运行时,继承自的表单TMainForm
将处于活动状态。为此,我编写了一个名为GetHandle()
.
这个函数在TMainForm
头文件中定义如下:
在继承类中是这样的:
但是,当我打电话时GetHandle()
,TMainForm
我仍然会遇到访问冲突。此外,在尝试了更多的事情之后,我意识到从内部调用任何虚函数都会MouseHook
导致访问冲突。
为什么我无法使用 Platform::Win::WindowHandleToPlatform(this->Handle)->Wnd;
inside of检索我的表单句柄MouseHook
?为什么在内部调用虚函数MouseHook
会导致访问冲突?
编辑:
为了测试 Remy 提出的 MainForm 指针无效的答案,我在TMainForm
构造函数中添加了一段代码来测试指针是否有效。TMainForm
此外,我向继承自并在启动我的应用程序时加载的类的构造函数添加了一段代码,以测试其全局指针。我班级中的全局MainForm
指针TMainForm
实际上是无效的。但是,继承类的全局指针是有效的,因为它是实际被实例化的类。
c++ - 在 Mouse Proc C++ Win32 中重复消息
我有一个程序,当用户按下 Ctrl 按钮并右键单击时,它将在屏幕上显示一个消息框。但它有一个循环,我只按 Ctrl 按钮并右键单击一次,但它会显示一系列消息框。如何解决这个问题? https://youtu.be/LzI9M_zEEKQ
这是我的 MouseProc 程序
谢谢阅读。
vb.net - 中断 Mousehook,处理并创建新的 Mousehook?
我正在使用鼠标钩(我尝试了 2 个不同的钩子),但它崩溃了。我认为原因是在未完成的计算期间进行鼠标点击。我不知道确切的原因,但一段时间后它停止工作。
所以我尝试了另一件事,每次完成计算时,我都会处理(旧)鼠标钩并创建一个新鼠标钩。
这很好用并且可以完成工作......但是这次应用程序在一段时间后崩溃,出现“垃圾收集”和“调用”错误。我认为原因是我不能像我一样摆脱钩子?但是这样的事情可能吗?
windows - 使用 Raw Input 时如何吞下鼠标输入?
情况:我正在开发一个覆盖应用程序,该应用程序需要拦截指向另一个进程的输入,并在必要时阻止该输入。
以前的尝试:到目前为止,我已经创建了一个低级鼠标钩子,可以阻止鼠标输入到某些目标进程;但是,我感兴趣的过程不受影响。我相信这是因为该过程使用原始输入而不是通常的 Windows 消息。
问题:如何吞下这些 Raw Input 鼠标消息?
c# - 低级鼠标钩子不会在管理进程上触发 mousedown/mouseup 事件
我现在正在编辑这个项目,因为我认为我已经查明了问题,这似乎是 Win8.1 和 Win10 的操作系统错误。问题摘要仍然与“低级别鼠标挂钩不会在管理进程上触发 mousedown/mouseup 事件”之前相同......对于管理应用程序,如果非管理员启动自己的低级别挂钩。
重现问题的步骤:
- 在此处下载演示应用程序
- 以管理员身份运行应用程序
- 确保监视鼠标向上/向下/单击事件
- 确认在第 2 步启动的应用程序能够监控管理进程(包括其自己的窗口)上的鼠标向上/向下/单击事件
- 以非管理员身份运行该应用的另一个实例
- 确保监视鼠标向上/向下/单击事件
结果:请注意,以管理员身份运行的应用程序实例(从 #2 开始)现在无法获取鼠标向上/向下/单击事件,但它仍然可以获取其他鼠标事件和所有键盘事件
有没有人遇到过这个问题?
vb6 - VB6 鼠标钩子捕获用户点击的控件
我有一个键盘钩子,可以监听 [shift] + [F12] 按键按下以激活程序中的编辑模式。通过编辑模式,我的意思是禁用程序窗口中不活动的任何表单,并将焦点设置为活动窗口。此外,我更改了 GUI 以反映用户正在运行编辑模式。
这一切的目的是定制用户单击的特定表单控件(例如,如果他们单击标签或组合框,用户将能够编辑从数据库填充此信息的数据)。我真正要寻找的是能够访问用户在活动表单中单击的控件的控件名称,DYNAMICALLY(无需在每个表单上设置事件)。因此,一旦用户单击控件,例如标签、组合框、列表视图或列表框(在活动窗体上),我想捕获单击的控件名称并将其传递给另一个将处理该控件编辑的窗体.
c# - 全局检测按键和鼠标点击
我正在尝试创建一个程序来全局检测按键和鼠标点击。我四处搜索并找到了两者的解决方案,并让他们在同一个程序中工作。但我想将这两个单独的类组合成一个类,两者兼而有之。我已经摆弄了一段时间,不知道该怎么做。有谁知道如何解决这个问题?提前致谢!
鼠标点击类:
键盘类:
我是这样开始的:
接收两个事件的函数:
我也在尝试滚动,我通过添加这些行来检测滚动。但我不知道如何读取滚动方向或值并将其分配给变量。
java - 在java中拾取pascal鼠标移动
我有一个使用 pascal 运行的宏工具。我需要在程序运行很长时间时跟踪鼠标的移动。我在 java 中编写了一个基本的鼠标记录器,它使用 jnativehook 以慢动作绘制动作和点击,以便更容易分析它们。当我手动移动鼠标时它工作正常,但它不会从帕斯卡中拾取鼠标移动。但是,它确实会从 pascal 中获取鼠标点击。
如何在 Java 中获取由 pascal 宏工具所做的鼠标移动?
c++ - WinApi:消息循环可以被异步过程调用中断吗?
下面的代码注册了一个低级鼠标钩子来全局监控鼠标事件。
这是我能得到的最简单的工作示例。
使用 VC++ 2010 编译:cl test.cpp /link /entry:mainCRTStartup /subsystem:windows
这是基本的一个线程、一个窗口、一个消息泵示例。除了鼠标钩。
我怀疑这段代码所做的与我在 SO、MSDN、论坛、博客等中反复阅读的两件事相矛盾。
全局挂钩程序必须驻留在 DLL
MSDN 文档中,以SetWindowsHookEx
通过以下方式确认这一点:如果 dwThreadId 参数为零,则 lpfn 参数必须指向 DLL 中的挂钩过程
GUI 线程(带有消息泵的线程)不能被中断,因为
GetMessase
' 的等待状态是不可警告的。这意味着当GetMessage
阻塞等待更多消息时,它无法接收到中断其等待状态的信号。
但是,这里看不到任何 DLL,而且钩子过程必须中断线程,否则程序将无法运行,并且确实可以(我假设该程序中只有一个线程)。
所以要么我完全误解了这两点,要么这段代码的工作方式与我所期望的异步过程调用方法不匹配。
不管怎样,我对这里发生的事情一无所知。
你能解释一下这段代码是如何工作的吗?
是单线程程序吗?
钩子程序是否中断线程?
以上两点中的任何一点都是真的吗?