You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:33:27