You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:24:02