问题标签 [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.
.net - 是否有用于发送击键、鼠标点击、鼠标移动和其他输入的 .NET 库?类似于 AutoHotKey 但用于 .NET 库?
我希望在本质上编写类似于我可以使用AutoHotKey执行的代码,仅在 .NET 和 C# 中,因为它是一个更强大的环境。我不知道是否有可用于此类钩子的包装库。
有谁知道为 .NET 执行此操作的库?
c++ - 使用 Windows API 创建鼠标挂钩的问题
我正在尝试使用 Windows API 创建鼠标挂钩。目前,我有以下代码,但我正在努力使其工作。也许一些示例代码可以帮助我更好地理解这些概念。
在单击鼠标左键的同时,上面的代码进入案例WM_LBUTTONDOWN
30 多次。我的代码有问题吗?如果是这样,我该如何解决?
.net - WPF 使用什么来捕获鼠标和键盘输入?
SetWindowsHookEx
我使用和全局(系统范围)过滤某些鼠标点击WH_MOUSE_LL
。问题是它不适用于 WPF 应用程序(无论我是否指示系统忽略这些点击,所有 WPF 应用程序都会检测到鼠标点击)。我已经在这里问过一个类似的问题,但我假设 WPF 使用DirectInput
而不是标准的 Windows 消息来检测输入。但真的吗?
我已经能够找到一个能够使用SendMessage
. 如果这是可能的,那么我认为这在某种程度上意味着 WPF 不DirectInput
用于鼠标输入。但是,为什么不能阻止 WPF 应用程序检测鼠标点击SetWindowsHookEx
呢?
虽然这个问题主要是关于鼠标输入的,但我也想知道它是如何用于键盘输入的。
例子
我快速创建了以下解决方案来重现奇怪的 WPF 行为。它由3个项目组成:
HookTester
启动项目,自动启动其他2个项目,所以你应该主要关注这个。启动时安装鼠标钩子,关闭窗体时卸载钩子。WinFormsTest
包含一个带有默认上下文菜单的文本框,您可以在其中测试鼠标右键。当 HookTester 运行时,您应该无法使用鼠标右键调用上下文菜单。WpfTest 也
包含一个文本框,带有自定义上下文菜单(虽然我也可以使用默认菜单),所以这又是测试鼠标右键的地方。只要 HookTester 正在运行,您就不能调用上下文菜单(使用鼠标右键),但是由于某种原因,无论如何都会显示菜单(为什么???)。
警告:当您运行解决方案时,HookTester 项目将启动并立即安装挂钩以拒绝任何鼠标右键单击(系统范围)。您只需关闭 HookTester 表单即可轻松卸载挂钩。谨慎测试。
windows - 如何同时解除两个钩子程序?
在我的应用程序中,我创建了两个程序,即用于处理焦点事件的 callbackwnd 程序和用于处理鼠标单击事件的鼠标程序。当我解开这两个程序时,应用程序会闪烁一点。如何克服这个问题?
我也想知道是哪个程序最先使用unhook功能?
问候, 卡提克
c# - 钩住第三个 X-Mouse 按钮?
我用 C# 编写了一个低级鼠标钩子,它应该捕获 XBUTTON 事件。对于第一个和第二个 xButton,它工作得很好,但是我的鼠标上没有关于第三个 xButton 的消息。似乎没有可能的方法来捕获该按钮的事件?
我有一个游戏鼠标,在两个第一个 xButton 之间,是第三个 xButton。当我单击它时,什么也没有发生,所以我想编写一个自定义 C# Mouse-Hook 应用程序来为该按钮编写自定义行为......
c++ - 如何在没有全局挂钩的情况下获得鼠标/键盘活动通知?
我有一个透明窗口(WS_EX_TRANSPARENT)浮动最上面。
只要有鼠标移动(屏幕上的任何地方)或键盘敲击,它就需要显示相关信息(例如鼠标位置)。
是否可以在不使用全局挂钩的情况下捕获鼠标/键盘活动?杀毒软件几乎总是会因使用全局挂钩而触发误报。
任何想法都非常感谢。
c# - WW_MOUSE_LL 钩子没有被调用
我目前正在为我的应用程序创建一个 AFKChecker。问题是没有调用低级鼠标钩子。我检查了它是否返回 0,但它没有。所以键盘挂钩有效,但鼠标挂钩无效。我已经google了,但我仍然没有找到解决我的问题的方法。
最好的祝福
c# - C# 低级鼠标钩子和表单事件处理
我正在使用由 VS 2010 生成的简单表单,其中包含 2 个按钮,开始和停止。开始使用 SetWindowsHookEx 触发 WH_MOUSE_LL,停止停止钩子。钩子工作正常,我用双击“替换”鼠标中键点击,我唯一的问题是点击表单的最小化/最大化/关闭按钮,似乎有某种“事件竞赛”之间上面提到的按钮调用的钩子和事件。它反映了这样一个事实,即当您按下其中一个按钮时,它会在完成其操作之前一直“按下”一段时间(例如,表单最小化)。当我右键单击表单并选择其中一项操作时,当我停止挂钩并按下上述按钮之一时,它会立即做出同样的反应。有没有人遇到过这样的行为?
windows - 低级鼠标挂钩:处理阻止捕获的应用程序
我注意到我的鼠标钩代码在与 EA 的 Origin 商店交互时无法工作。基本上在窗口内部单击时,它不会调用我在窗口中注册的回调(使用该SetWindowsHookEx
函数)。我用 Steam 试过,没有问题。
我很确定这是某种机制的一部分,旨在防止流氓恶意软件控制您的计算机以访问帐户信息。我很好奇它是如何完成的。我的猜测是我需要设置一些驱动程序魔术来从更接近硬件的层规避这个问题?
免责声明:我当然不是试图创建任何恶意软件,我只是为了软件自动化而构建强大的工具。显然,权力越大,责任越大。
c# - 从低级鼠标钩 C# 返回的错误鼠标坐标
我正在构建一个 WPF 应用程序,其中涉及一些骇客,以便在同一渲染层上嵌入 Form 元素。本质上,我所做的是将表单呈现在屏幕外,并在 WPF 图像中制作表单的模型。我还有一个低级鼠标钩子,如果 WPF 应用程序的事件注定要用于 Form 模型,则它会从它们中窃取事件,而是使用 PostMessage(...) 将事件发送到隐藏的表单元素。
如果我从我的钩子程序返回一个非零值,指示吃掉事件(即使我仍然调用队列中的所有鼠标钩子),光标会停留在一个位置。我假设这是因为光标位置在事件未到达的某种 WPF 应用程序层中得到处理。
我认为完全可以防止 WPF 应用程序知道该事件,因为我可以自己设置光标位置——毕竟有坐标附加到鼠标事件。不幸的是,这些鼠标坐标似乎非常不正确。事实上,无论我的光标在哪里,我总是收到相同的坐标。
这是我的代码:
}
然后在 user.SystemMouseHookProc(...) 中,我打印出正确的光标位置,然后是鼠标钩子拉出的坐标,输出总是如下所示:
光标:523,578
{X=1985777551,Y=1985777602} //这个坐标永远不会改变
该输出显然是错误的。如何从鼠标钩中获取正确的鼠标坐标?
谢谢你。
PS这个解决方案来源于网上流行的一个。不幸的是,该解决方案无法满足我的需求,因此我不得不将其更改为这种形式。