问题标签 [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++ 中鼠标钩子的困惑
我正在尝试获取全局鼠标位置。我有一个可以获取鼠标位置的钩子,但是它只能在钩子代码中访问它。试图访问 main 中的数据是行不通的。
解释这一点的最好方法是使用代码:
使用上面的代码,移动鼠标将在控制台窗口中显示新的位置。但是,如果我把std::cout<<position.x<<std::endl;
main 放在里面,它只会说 0. position
是一个全局变量。
输出在 main 内部时的代码:
第一段代码工作正常,它检测到鼠标位置,我只是不知道如何将 x,y 数据放入我的 main 中。
c++ - 鼠标钩子中的 GET_WHEEL_DELTA_WPARAM(wParam) 返回 0
我在这个线程中找到了一个鼠标钩子,它可以工作,但是当我尝试检查鼠标滚轮的状态(是向前还是向后移动)时,获取移动的函数总是返回 0。
我是否调用了 GET_WHEEL_DELTA_WPARAM(wParam) 错误?还是我使用钩子的方式与 GET_WHEEL_DELTA_WPARAM(wParam) 函数不兼容?
我发现的另一个线程有代码从名为 MOUSEHOOKSTRUCTEX 的结构中获取 mouseData(这可能允许我获取我正在寻找的移动值),但是当我尝试编译时,我收到错误“'MOUSEHOOKSTRUCTEX' is not declared在这个范围内”。
请注意,此代码已被剥离以隔离问题,因此请原谅奇怪的部分,例如 while 循环不受阻碍地运行。
解决方法是使用以下方法获得运动:
在 MouseHookProc 函数中。
用户克里斯给出的答案
c# - This code has a function call with no parameters - working in C# but NOT VB.NET
I'm trying to use this code, which is in C#, in VB.NET. The code's purpose is to read the mouse coordinates and output them when you click the mouse button, using a Console application. Yes, I realise this is a stupid use of a Console application, but it may be necessary for a project I want to undertake. I've managed to make it work in C#, but in VB.NET I get an error in this area:
The C# line is:
The HookCallback function has three parameters, I've included the code below:
For some reason in the C# code, it calls the HookCallback function with no parameters listed and this is absolutely fine. In VB.NET, this doesn't work, as I would expect. My question is: how can I make this work in VB.NET? I'm new to C#, otherwise I would use the C# code.
c# - VB.NET - 让这个应用程序返回两个整数来设置鼠标钩子
我已经设法让这个 C# 代码(不是我自己的!)在 VB.NET 中工作,以在控制台应用程序中实现鼠标挂钩。这是 VB.NET 代码:
然后我从 Sub Main 调用它:
但是,当我调试它时,它转到 Application.Run() 行并且它没有前进到下一行,所以我看不到它在幕后做了什么。然后它等待用户输入并在控制台上返回整数坐标。这不是我想要它做的。我想让这段代码在另一个函数或后台工作人员中运行,每当它收到鼠标点击时将坐标传递给主线程,以便它可以处理其余的。问题是,这段代码对于我的理解水平来说太复杂了,我真的不知道它是如何工作的。如果我至少可以设法让控制台在用户单击时返回鼠标坐标,我应该能够忽略它并从那里处理其余代码。
qt - QT 全局鼠标监听器
我是来自 Java 的 QT 新手。有没有这样的东西: https ://code.google.com/p/jnativehook/ QT?我可以获取所有带有坐标的鼠标事件吗?我做了以下事情:
这工作正常,但它只在我的应用程序内部而不是系统范围内。我该怎么做才能让它在 QT 中工作?而且这只需要在windows上运行...
c++ - 全局鼠标钩子导致应用程序崩溃(c++ / windows7)
我正在尝试编写一个 dll 来在 Windows 7 中注入一个全局鼠标钩子。它基本上可以工作,但几秒钟后(可能是 10 - 15 秒),整个应用程序就会冻结,鼠标在 Visual Studio 之外无法工作(我仍然可以通过 vs 停止应用程序,但仅此而已(例如使用任务管理器执行此操作))。
我一直在寻找一段时间,但我真的找不到我的问题的答案。我已将我的 dll 减少到最低限度(安装鼠标钩而不用它做任何事情),但它仍然会发生。
标题
cpp
没有例外或任何事情。应用程序冻结,除了 Visual Studio 之外的所有内容都不再对鼠标做出反应(如前所述,甚至任务管理器也没有)
我不知道它是否重要,但我在 c++ 控制台应用程序中使用 dll。
在此先感谢曼努埃尔
c# - 记录应用程序外的活动
也许又是不正确的问题,但是:
我正在尝试创建一个应用程序,该应用程序将在后台运行时记录每个用户的鼠标点击。
我设法记录了每个鼠标点击类型(使用Hook
),但后来我遇到了问题。我不仅需要记录每次点击,还需要知道按下了什么以及在哪里。我还需要记录第二个信息,即在某个应用程序中按下了哪种对象(button
或者checkbox
如果确实存在,则在哪个面板中,还有对象名称),但我不需要知道这些对象应该做什么。
那么,是否有可能与global hook
帮助或是否有一些图书馆可以帮助做到这一点?
编辑: 发现它应该更容易它 wpf 应用程序,但还有更多问题 - 如何让它记录每个单击的对象,而不仅仅是在创建的 wpf 内部。
c++ - 挂起低级钩子的最佳方法(winapi)
我想知道就效率(cpu/内存使用)而言,暂时挂起/绕过低级鼠标/键盘挂钩的最佳方法是什么。
我找到的当前解决方案是在示例中设置一个全局变量“doHook”,在钩子过程中对其进行测试,如果没有设置,就让它像这样通过 CallNextHookEx 传递:
这是一个好的解决方案吗?更好的方法?
谢谢
winapi - 如何用左键改变右边?
我正在使用以下 winapi 代码通过左键单击更改右键单击。
钩子工作得很好,但似乎这种技术是只读的(我在其他一些stackoverflow问题中读到了这个)。这就是我想要做的:
任何想法我怎样才能做到这一点?
提前致谢。
c# - 调用 UnhookWindowsHookEx() 后发生无效的钩子句柄错误
我正在开发一个窗口应用程序 c# .net。该应用程序用于通过远程桌面连接连接其他机器(窗口机器)并监控用户在该远程机器上所做的事情。
为了监控用户操作,我在连接到远程机器时使用 SetWindowsHookEx() 方法安装了 WH_KEYBOARD_LL 和 WH_MOUSE_LL 挂钩的自定义挂钩程序作为全局挂钩程序。
当用户从远程机器上注销时,我需要使用 UnhookWindowsHookEx() 释放钩子程序。通过显示消息出现问题:“フックハンドルが无效です”(这意味着无效的挂钩手柄)。
这个错误并不总是发生。它有时会发生。
我是 c# .net 开发的初学者。我不知道这个错误。
所以,我想知道为什么在调用 UnhookWindowsHookEx() 时会发生该错误。
请任何人帮助我。
我的代码是:
上述代码执行以下代码: