本文目录导读:

这是一个非常常见的需求,通常用于自动化测试、辅助操作或游戏脚本,发送文本到指定窗口,核心是解决两个问题:找到目标窗口 和 模拟键盘输入。
具体用什么工具取决于你的技术背景和场景,以下是几种主流的方法,从简单到复杂排列:
使用 AutoHotkey(AHK)—— 最简单、最灵活
AutoHotkey 是 Windows 平台上最强大的自动化脚本工具,几行代码就能搞定。
步骤:
-
安装 AutoHotkey 从官网下载安装。
-
创建脚本:新建一个
.ahk文件。 -
编写代码:
; 以下代码实现:按下 Win+Z 热键, ; 将 "Hello, World!" 发送到当前激活的窗口 #z:: ; Win+Z 作为热键 SendInput Hello, World!{Enter} ; 发送文本并回车 return -
运行:双击脚本文件即可生效。
进阶用法(发送到特定窗口):
如果你想发送到某个特定的、未激活的窗口(比如后台运行的记事本),可以使用 ControlSend 命令:
ControlSend, Edit1, 这是一段自动输入的文本, 记事本
优点:零编程基础也能快速上手,语法简单,功能强大。 缺点:只能用于 Windows。
使用 Python(跨平台、适合开发者)
如果你需要跨平台(Windows/Mac/Linux)或者要进行复杂的逻辑处理,Python 是首选。
核心库: pyautogui(跨平台,但需要窗口在前台)或 pywinauto(仅Windows,支持后台)。
方案 A:使用 pyautogui(最通用,但窗口需激活)
import pyautogui
import time
# 1. 找到窗口并激活它(使用窗口标题的一部分)
windows = pyautogui.getWindowsWithTitle('记事本') # 根据标题查找
if windows:
window = windows[0]
window.activate() # 激活窗口到前台
time.sleep(0.5) # 等待窗口激活
# 2. 发送文本
pyautogui.write('Hello from Python!', interval=0.05) # interval是按键间隔
pyautogui.press('enter') # 模拟按回车
方案 B:使用 pywinauto(支持后台发送,Windows专用)
这是自动化 Windows GUI 的标准库,功能非常强大。
from pywinauto import Application
# 1. 连接到已运行的记事本进程(通过窗口标题或进程名)
app = Application(backend="uia").connect(title="无标题 - 记事本")
# 2. 获取主窗口
dlg = app.window(title_re=".*记事本")
# 3. 通过控件ID或文本定位输入框,并设置文本
dlg.Edit1.set_text('这是通过后台发送的文本!')
# 或者进行更精细的键盘输入:
# dlg.Edit1.type_keys('逐字输入测试{ENTER}')
优点:逻辑控制能力强,可以集成到工作流程中。 缺点:需要安装 Python 环境,代码量相对 AHK 大一些。
使用系统原生工具(命令行)
如果你想用最简单、最轻量的方式,可以用系统自带的命令行。
Windows:使用 PowerShell
将文本发送到一个已知的、已打开的窗口(比如记事本)。
# 安装 PSSendKeys 模块(需要管理员权限)
# Install-Module -Name PSSendKeys -Force
# 激活记事本窗口
(New-Object -ComObject WScript.Shell).AppActivate("无标题 - 记事本")
Start-Sleep -Milliseconds 500
# 发送文本
$wshell = New-Object -ComObject wscript.shell
$wshell.SendKeys("这是一段自动输入的文本~") # ~ 代表回车
注意:这种方法比较脆弱,SendKeys 可能会受键盘焦点变化影响。
使用专业的自动化测试工具
如果你需要商业级别、稳定且功能全面的解决方案:
- SikuliX:基于图像识别,你截图目标窗口的控件,它就能自动点击并输入,适合没有代码接口的古老软件。
- UiPath / Automation Anywhere:企业级 RPA(机器人流程自动化)工具,可视化拖拽,但学习曲线较陡。
- 按键精灵(KeyMouse):游戏玩家常用,适合在游戏窗口内进行复杂操作和键盘连点。
总结与建议
| 你的技术背景 | 推荐工具 | 原因 |
|---|---|---|
| 零基础 / 只想快速解决 | AutoHotkey | 安装即用,代码最少,社区支持极好。 |
| 会写代码(Python/C++) | Python (pywinauto 或 pyautogui) | 跨平台、逻辑复杂、可集成到项目。 |
| 只需要临时用一次 | PowerShell 脚本 | 系统自带,无需任何安装。 |
| 需要精确控制控件 | pywinauto (Windows) 或 AHK | 可以后台发送,不影响你使用电脑。 |
推荐入门路径:如果你在 Windows 上工作,AutoHotkey 是解决这类问题的不二之选。
如果你需要我帮你写一个特定场景(比如发送到某个游戏聊天框、某个特定的软件输入框)的脚本,请告诉我目标窗口的名称和是否支持后台,我可以提供更具体的代码。