vb.net - 在 VB.net 屏幕上的任意位置使用鼠标滚动
问题描述
我正在尝试使用鼠标按钮和滚动组合设置全局快捷方式(按下鼠标右键时向上(或向下)滚动)。
我想我应该尝试对鼠标滚动做出反应,但我不知道如何检测表单之外的鼠标滚轮。
现在,我让它通过计时器对鼠标点击做出反应,并将表单设置为始终在顶部(没有问题,它总是在顶部),但不知道如何进行。
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If MouseButtons.HasFlag(MouseButtons.Right) = True Then
TextBox1.Text = "YES"
Else
TextBox1.Text = "NO"
End If
End Sub
目标是使其最小化用户使用该快捷方式设置的应用程序,以防万一该信息有帮助。我有其余的代码只是无法弄清楚那部分。
编辑:它在表单内部工作:
Private Sub ListBoxCHOWAJ_MouseWheel(sender As Object, e As MouseEventArgs) Handles ListBoxCHOWAJ.MouseWheel
If MouseButtons.HasFlag(MouseButtons.Right) = True Then
If e.Delta > 0 Then
TextBox1.Text = "up"
Else
TextBox1.Text = "down"
End If
End If
End Sub
解决方案
您需要一个鼠标钩子来检测应用程序外的滚动。看看我的InputHelper 库和它的低级鼠标钩子。
要将其包含在您的项目中,请下载已编译的 DLL并将其添加为参考:
右键单击您的项目,
Solution Explorer
然后按Add Reference...
转到
Browse
选项卡。找到 InputHelper DLL 文件,选择它并按
OK
。
您可以在钩子的MouseWheel
事件处理程序中执行所有逻辑,不再需要计时器:
Imports InputHelperLib
Public Class Form1
Dim WithEvents MouseHook As New InputHelper.Hooks.MouseHook
Private Sub MouseHook_MouseWheel(sender As Object, e As InputHelperLib.InputHelper.Hooks.MouseHookEventArgs) Handles MouseHook.MouseWheel
If MouseButtons.HasFlag(MouseButtons.Right) = True Then
'Do something...
End If
End Sub
End Class
没有必要e.Delta
像你一样检查,因为它永远不会是 0。
推荐阅读
- r - 我想计算时间之间的时间差
- django - Django Rest Framework - 如何在 POST 时设置 current_user
- javascript - Javascript 按钮禁用然后立即启用
- google-chrome - Chrome 扩展:如何检查使用 pac 脚本设置的代理是否有效
- database - 为什么我会收到“找不到数据源名称且未指定默认驱动程序”,我该如何解决?
- tensorboard - TensorBoard 不会实时更新
- javascript - 如何使用javascript删除firestore上的所有文档
- sql-server - 使用 SQL 查询将最新的平面文件从文件夹加载到数据库表
- javascript - 按键减少数组对象并返回嵌套对象
- wireshark - TSHARK 排除过滤器