Roblox为活动窗口时pyautogui与pydirectinput的moveTo方法无法移动鼠标如何解决
问题根因
Roblox默认启用*原始输入(Raw Input)*模式,该模式会绕过Windows系统的常规鼠标事件消息队列,直接读取硬件输入设备的信号。你使用的pyautogui基于Windows消息机制实现鼠标模拟,原生pydirectinput默认的模拟参数也未适配Raw Input场景,因此当Roblox处于前台活动状态时,初始的模拟事件会被直接忽略,只有手动移动硬件鼠标触发系统输入状态更新后,模拟信号才会被临时识别。
可行解决方案
- 方案1:调整pydirectinput的模拟模式
调用moveTo前先完成pydirectinput的适配配置,在代码开头添加以下内容即可:
后续正常调用import pydirectinput # 调整输入间隔避免事件被吞 pydirectinput.PAUSE = 0.01 pydirectinput.FAILSAFE = True # 强制使用SendInput API的绝对坐标模式,适配Raw Input pydirectinput._moveTo = pydirectinput._moveTo_absolutepydirectinput.moveTo(100,100)即可直接在Roblox前台生效,无需手动预移动鼠标。 - 方案2:禁用Roblox的Raw Input设置
打开Roblox客户端设置页,找到「输入」分类,关闭原始输入选项即可让Roblox响应常规系统鼠标模拟事件,该方案无需修改代码,仅适用于个人本地使用场景。 - 方案3:更换底层输入模拟库
可以换用pynput或者自行封装Windows SendInput API实现硬件级输入事件模拟,完全适配Roblox的输入检测逻辑。
内容的提问来源于stack exchange,提问作者Anthony91591353
相关产品推荐
相关产品推荐

