问题标签 [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.

0 投票
2 回答
4171 浏览

c++ - 关于 C++ 中鼠标钩子的困惑

我正在尝试获取全局鼠标位置。我有一个可以获取鼠标位置的钩子,但是它只能在钩子代码中访问它。试图访问 main 中的数据是行不通的。

解释这一点的最好方法是使用代码:

使用上面的代码,移动鼠标将在控制台窗口中显示新的位置。但是,如果我把std::cout<<position.x<<std::endl;main 放在里面,它只会说 0. position是一个全局变量。

输出在 main 内部时的代码:

第一段代码工作正常,它检测到鼠标位置,我只是不知道如何将 x,y 数据放入我的 main 中。

0 投票
0 回答
1631 浏览

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 函数中。

用户克里斯给出的答案

0 投票
0 回答
288 浏览

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.

0 投票
1 回答
683 浏览

c# - VB.NET - 让这个应用程序返回两个整数来设置鼠标钩子

我已经设法让这个 C# 代码不是我自己的!)在 VB.NET 中工作,以在控制台应用程序中实现鼠标挂钩。这是 VB.NET 代码:

然后我从 Sub Main 调用它:

但是,当我调试它时,它转到 Application.Run() 行并且它没有前进到下一行,所以我看不到它在幕后做了什么。然后它等待用户输入并在控制台上返回整数坐标。这不是我想要它做的。我想让这段代码在另一个函数或后台工作人员中运行,每当它收到鼠标点击时将坐标传递给主线程,以便它可以处理其余的。问题是,这段代码对于我的理解水平来说太复杂了,我真的不知道它是如何工作的。如果我至少可以设法让控制台在用户单击时返回鼠标坐标,我应该能够忽略它并从那里处理其余代码。

0 投票
1 回答
3875 浏览

qt - QT 全局鼠标监听器

我是来自 Java 的 QT 新手。有没有这样的东西: https ://code.google.com/p/jnativehook/ QT?我可以获取所有带有坐标的鼠标事件吗?我做了以下事情:

这工作正常,但它只在我的应用程序内部而不是系统范围内。我该怎么做才能让它在 QT 中工作?而且这只需要在windows上运行...

0 投票
1 回答
660 浏览

c++ - 全局鼠标钩子导致应用程序崩溃(c++ / windows7)

我正在尝试编写一个 dll 来在 Windows 7 中注入一个全局鼠标钩子。它基本上可以工作,但几秒钟后(可能是 10 - 15 秒),整个应用程序就会冻结,鼠标在 Visual Studio 之外无法工作(我仍然可以通过 vs 停止应用程序,但仅此而已(例如使用任务管理器执行此操作))。

我一直在寻找一段时间,但我真的找不到我的问题的答案。我已将我的 dll 减少到最低限度(安装鼠标钩而不用它做任何事情),但它仍然会发生。

标题

cpp

没有例外或任何事情。应用程序冻结,除了 Visual Studio 之外的所有内容都不再对鼠标做出反应(如前所述,甚至任务管理器也没有)

我不知道它是否重要,但我在 c++ 控制台应用程序中使用 dll。

在此先感谢曼努埃尔

0 投票
0 回答
84 浏览

c# - 记录应用程序外的活动

也许又是不正确的问题,但是:

我正在尝试创建一个应用程序,该应用程序将在后台运行时记录每个用户的鼠标点击。

我设法记录了每个鼠标点击类型(使用Hook),但后来我遇到了问题。我不仅需要记录每次点击,还需要知道按下了什么以及在哪里。我还需要记录第二个信息,即在某个应用程序中按下了哪种对象(button或者checkbox如果确实存在,则在哪个面板中,还有对象名称),但我不需要知道这些对象应该做什么。

那么,是否有可能与global hook帮助或是否有一些图书馆可以帮助做到这一点?

编辑: 发现它应该更容易它 wpf 应用程序,但还有更多问题 - 如何让它记录每个单击的对象,而不仅仅是在创建的 wpf 内部。

0 投票
1 回答
537 浏览

c++ - 挂起低级钩子的最佳方法(winapi)

我想知道就效率(cpu/内存使用)而言,暂时挂起/绕过低级鼠标/键盘挂钩的最佳方法是什么。

我找到的当前解决方案是在示例中设置一个全局变量“doHook”,在钩子过程中对其进行测试,如果没有设置,就让它像这样通过 CallNextHookEx 传递:

这是一个好的解决方案吗?更好的方法?

谢谢

0 投票
1 回答
491 浏览

winapi - 如何用左键改变右边?

我正在使用以下 winapi 代码通过左键单击更改右键单击。

钩子工作得很好,但似乎这种技术是只读的(我在其他一些stackoverflow问题中读到了这个)。这就是我想要做的:

任何想法我怎样才能做到这一点?

提前致谢。

0 投票
0 回答
1385 浏览

c# - 调用 UnhookWindowsHookEx() 后发生无效的钩子句柄错误

我正在开发一个窗口应用程序 c# .net。该应用程序用于通过远程桌面连接连接其他机器(窗口机器)并监控用户在该远程机器上所做的事情。

为了监控用户操作,我在连接到远程机器时使用 SetWindowsHookEx() 方法安装了 WH_KEYBOARD_LL 和 WH_MOUSE_LL 挂钩的自定义挂钩程序作为全局挂钩程序。

当用户从远程机器上注销时,我需要使用 UnhookWindowsHookEx() 释放钩子程序。通过显示消息出现问题:“フックハンドルが无效です”(这意味着无效的挂钩手柄)。

这个错误并不总是发生。它有时会发生。

我是 c# .net 开发的初学者。我不知道这个错误。

所以,我想知道为什么在调用 UnhookWindowsHookEx() 时会发生该错误。

请任何人帮助我。

我的代码是:

上述代码执行以下代码: