Pywinauto后台运行脚本问题:最小化窗口后按键无响应
问题分析与解决
你的代码里,窗口最小化后send_keystrokes不生效的核心原因是:模拟物理按键的操作会发送给当前前台有焦点的窗口,而最小化的记事本已经失去焦点,无法接收这些按键。另外你先调用set_focus()再马上最小化,焦点会立刻转移,等于没给记事本保留有效焦点。
解决方案
直接定位到记事本的编辑控件,向控件发送按键,而非窗口级操作。控件级交互不需要窗口处于前台或有焦点,后台也能生效。
修改后的代码:
import pywinauto from pywinauto import Application import time app = Application().start("notepad.exe") time.sleep(1) # 给程序启动留足初始化时间 # 定位记事本的编辑控件(类名为Edit) edit_control = app.window().child_window(class_name="Edit") app.window().minimize() time.sleep(2) # 直接向编辑控件发送按键 edit_control.send_keystrokes("{ENTER}") # 可选:恢复窗口验证效果 app.window().restore()
补充说明
- 如果你的记事本标题是特定语言(比如希腊语),后续需要连接已有窗口时,确保
connect的title参数完全匹配窗口标题。 - 避免依赖
time.sleep做精确等待,pywinauto提供了wait()方法可以更可靠地等待控件就绪,比如edit_control.wait('ready', timeout=5)。
内容的提问来源于stack exchange,提问作者Giannis Papadopoulos
相关产品推荐
相关产品推荐

