UWP中如何通过InputInjector模拟鼠标滚动输入?
解决Windows.UI.Input.Preview.Injection实现鼠标滚动的问题
我之前也踩过这个坑!Windows输入注入里的鼠标滚动逻辑和点击、移动完全不一样,不是靠普通按键或坐标偏移就能实现的,得专门配置两个关键参数才行,给你一步步讲清楚:
核心思路
鼠标滚动属于独立的鼠标事件类型,需要通过InjectedInputMouseInfo的MouseOptions指定滚动方向类型,再用MouseData设置滚动增量,这两个参数缺一不可。
具体实现步骤
- 指定滚动类型:把
MouseOptions设为InjectedInputMouseOptions.Wheel(对应垂直滚动)或者InjectedInputMouseOptions.HorizontalWheel(对应水平滚动)。 - 设置滚动增量:Windows系统的标准滚动增量是120单位/格,向上/向右滚动用正数,向下/向左用负数。比如向下滚一格就是
-120,向右滚一格是120。 - 发送注入事件:把配置好的
InjectedInputMouseInfo数组传给InjectMouseInput方法就能触发滚动了。
代码示例(C#)
using Windows.UI.Input.Preview.Injection; // 初始化InputInjector(记得处理null情况,权限不足时会返回null) var inputInjector = InputInjector.TryCreate(); if (inputInjector == null) { // 这里处理初始化失败的逻辑,比如提示权限问题 return; } // 模拟垂直向下滚动1格 var verticalScrollDown = new InjectedInputMouseInfo { MouseOptions = InjectedInputMouseOptions.Wheel, MouseData = -120 // 向上滚动就改成120 }; inputInjector.InjectMouseInput(new[] { verticalScrollDown }); // 模拟水平向右滚动1格 var horizontalScrollRight = new InjectedInputMouseInfo { MouseOptions = InjectedInputMouseOptions.HorizontalWheel, MouseData = 120 // 向左滚动就改成-120 }; inputInjector.InjectMouseInput(new[] { horizontalScrollRight });
关键注意事项
- 权限声明:你的应用必须在
Package.appxmanifest里勾选inputInjectionBrokered能力,否则注入操作会被系统直接拒绝,这个在清单的「功能」选项卡就能找到。 - 增量适配:虽然少数应用支持自定义增量,但120是Windows的标准单位,绝大多数场景下都能正常触发滚动。如果要滚多格,直接把
MouseData设为120的倍数就行(比如240就是2格)。 - 系统兼容性:水平滚动在Win10及以上系统都能正常工作,老版本Windows可能支持有限。
内容的提问来源于stack exchange,提问作者Mihai Bratulescu
相关产品推荐
相关产品推荐

