升级Windows 11后Roblox无法接收Python自动化键鼠输入求助
解决Win11下Roblox等应用无法接收自动化键鼠操作的方案
以管理员身份运行脚本/IDE
Win11权限管控更严格,Roblox等应用可能需要更高权限才能接收模拟输入。右键点击PyCharm或运行脚本的终端,选择「以管理员身份运行」。关闭内存完整性功能
Windows Defender的「内存完整性」会阻止低级输入模拟,导致自动化工具失效:- 打开「设置」→「隐私和安全性」→「Windows安全中心」
- 进入「设备安全性」→「核心隔离详细信息」
- 关闭「内存完整性」,重启电脑生效。
统一应用与脚本的权限级别
如果Roblox以管理员权限运行,而脚本没有,会出现权限不匹配:
右键Roblox快捷方式→「属性」→「兼容性」,勾选「以管理员身份运行此程序」;或者反过来让脚本和应用权限一致。优化PyDirectInput调用方式
默认配置可能存在兼容问题,尝试添加参数并拆分点击动作:import pydirectinput import pyautogui import time pydirectinput.FAILSAFE = False pydirectinput.PAUSE = 0.01 x, y = pyautogui.size() def click_ratio(xr, yr): target_x = int(x / xr) target_y = int(y / yr) pydirectinput.moveTo(target_x, target_y, duration=0.1) pydirectinput.mouseDown() time.sleep(0.05) pydirectinput.mouseUp() pyautogui.alert() time.sleep(1) click_ratio(1.057414291615035, 1.6881594372801876)调用Windows底层API模拟输入
针对DirectInput独占模式的应用,直接用ctypes调用user32.dll的API:import ctypes import pyautogui import time class POINT(ctypes.Structure): _fields_ = [("x", ctypes.c_long), ("y", ctypes.c_long)] user32 = ctypes.WinDLL('user32', use_last_error=True) def set_cursor_pos(x, y): return user32.SetCursorPos(x, y) def mouse_click(): user32.mouse_event(0x0002, 0, 0, 0, 0) # 左键按下 time.sleep(0.05) user32.mouse_event(0x0004, 0, 0, 0, 0) # 左键松开 x, y = pyautogui.size() def click_ratio(xr, yr): target_x = int(x / xr) target_y = int(y / yr) set_cursor_pos(target_x, target_y) mouse_click() pyautogui.alert() time.sleep(1) click_ratio(1.057414291615035, 1.6881594372801876)关闭高DPI缩放适配
高DPI缩放可能导致坐标偏移,程序无法识别点击:
右键PyCharm或Roblox快捷方式→「属性」→「兼容性」,勾选「替代高DPI缩放行为」,下拉选择「应用程序」。
内容的提问来源于stack exchange,提问作者Walker
相关产品推荐
相关产品推荐

