pyautogui按键操作对desmume模拟器无效果该如何解决
问题原因
DeSmuME等游戏模拟器通常直接调用底层输入接口(如DirectInput、Raw Input)处理按键,pyautogui默认发送的普通虚拟按键事件不会被这类接口捕获,这就是按键在Chrome等普通软件生效、但在模拟器中无效的核心原因。
可行解决方案
- 方案1:调整DeSmuME输入设置
打开DeSmuME的设置 > 控制设置,取消勾选 使用Raw Input 或者 独占输入模式 相关选项,保存后重新运行脚本测试。 - 方案2:使用更底层的按键发送库替换pyautogui
优先用pydirectinput库,这个库专门针对游戏/模拟器场景优化,直接调用DirectInput接口发送按键,替换方式非常简单:
首先安装库:pip install pydirectinput
然后修改代码即可:
如果运行后仍无响应,可以在import pyautogui import pydirectinput import time print("Hello world") pyautogui.click(1239, 1070) # 打开desmume time.sleep(1) pyautogui.click(1093, 250) # 打开ROM选择界面 pyautogui.click(1135, 263) # 打开目标ROM time.sleep(10) # 等待ROM加载完成 # 把pyautogui.press换成pydirectinput.press即可 pydirectinput.press("k")pydirectinput.press("k")前增加一行点击模拟器窗口的代码,确保窗口处于前台激活状态。 - 方案3:确认权限匹配
如果你的DeSmuME是用管理员权限运行的,PyCharm/你的脚本也需要用管理员权限启动,否则发送的输入事件会被系统权限拦截,无法传递到模拟器进程。
内容的提问来源于stack exchange,提问作者ILikePlanesKid5
相关产品推荐
相关产品推荐

