pywinauto调用send_keystrokes输入韩文(Hangul)失效问题咨询
问题原因
send_keystrokes是基于Win32键盘按键事件实现的输入方法,仅支持映射到标准键盘按键的ASCII类字符,韩文、中文等Unicode扩展字符没有对应的单键盘按键映射,因此无法通过该方法直接输入。
解决方案
方案1:改用pywinauto内置的type_keys方法(优先测试)
type_keys对Unicode字符的兼容性比send_keystrokes更好,部分场景下可直接支持韩文输入,修改对应代码行即可:
import win32gui import pywinauto def send_msg(msg): global program_name hwnd = win32gui.FindWindow(None, program_name) app = pywinauto.Application(backend="win32").connect(handle=hwnd) program = app[program_name] # 替换send_keystrokes为type_keys program.type_keys(msg, with_spaces=True, pause=0.01) program_name = "填写目标窗口的完整标题" send_msg("영어만 작동하네요. 한글이 안돼요")
方案2:使用剪贴板粘贴实现Unicode字符输入(兼容性最高)
如果方案1仍然无法输入,可通过剪贴板写入内容后模拟粘贴操作,该方案支持所有Unicode字符,不受字符类型、输入法限制。
首先安装依赖:pip install pyperclip
修改后代码如下:
import win32gui import pywinauto import pyperclip def send_msg(msg): global program_name hwnd = win32gui.FindWindow(None, program_name) app = pywinauto.Application(backend="win32").connect(handle=hwnd) program = app[program_name] # 激活目标窗口确保输入焦点正确 program.set_focus() # 将韩文内容写入剪贴板 pyperclip.copy(msg) # 模拟Ctrl+V快捷键粘贴内容 program.type_keys("^v", pause=0.01) program_name = "填写目标窗口的完整标题" send_msg("영어만 작동하네요. 한글이 안돼요")
注意事项
- 如果目标窗口是高权限运行的程序,需要确保Python脚本也以管理员身份运行,避免权限不足导致操作失败
- 部分游戏、加密输入框会主动拦截模拟输入和粘贴操作,这类场景下上述方法均不生效
内容的提问来源于stack exchange,提问作者Love_Python
相关产品推荐
相关产品推荐

