autohotkey需用send系列命令向活动窗口输入文字或按键:一、send发纯文本,如f2::send, autohotkey is running!;二、send支持修饰键组合,如^!s::send, ^c^v;三、sendinput更稳定,推荐默认使用;四、sendevent异步、sendplay模拟硬件扫描码;五、动态内容用%变量名语法插入。

如果您希望让AutoHotkey自动向当前活动窗口输入文字、单个按键或复杂组合键,则需正确使用Send系列命令。以下是实现该功能的具体操作步骤:
一、基础Send命令发送纯文本
Send命令可将指定字符串逐字符输入到当前焦点窗口,适用于填写表单、批量录入等场景。它默认启用文本模式,自动处理特殊字符转义。
1、新建一个文本文件,重命名为input.ahk;
2、用记事本打开该文件,输入以下内容:F2::Send, AutoHotkey is running!;
3、保存文件后双击运行,此时按下F2键,将在当前光标位置输出“AutoHotkey is running!”;
4、若需换行,使用{Enter}而非回车符,例如Send, Line1{Enter}Line2。
二、Send命令模拟标准按键与修饰键组合
通过预定义的键名和修饰符符号(如^代表Ctrl、!代表Alt、+代表Shift、#代表Win),可精准构造任意组合键指令,无需真实按键物理触发。
1、在脚本中添加新热键定义,例如:^!s::Send, ^c^v;
2、该行表示:按下Ctrl+Alt+S时,依次执行Ctrl+C(复制)和Ctrl+V(粘贴);
3、若需同时按下多个修饰键与主键,写为Send, ^!{Delete},即模拟Ctrl+Alt+Delete;
4、对功能键、方向键等,须用大括号包裹,如{F5}、{Right}、{Tab}。
三、使用SendInput提升响应速度与兼容性
SendInput是Send命令的优化变体,直接将输入事件注入系统底层键盘队列,避免被游戏反作弊机制拦截,且延迟更低、更稳定。
1、将原脚本中的Send,替换为SendInput,,例如:F3::SendInput, Hello{Enter};
2、该方式在远程桌面、全屏游戏、UAC提权窗口中仍能可靠生效;
3、不支持部分高级Send参数(如{Text}模式),但对绝大多数按键模拟已足够;
4、推荐所有新脚本默认使用SendInput替代Send。
四、SendEvent与SendPlay的差异化应用
SendEvent采用异步事件注入,适合需要快速连续触发多键的场景;SendPlay则通过模拟真实硬件扫描码,适用于对输入时序极其敏感的软件(如某些工业控制界面)。
1、启用SendEvent:在热键中写入SendEvent, {LWin down}{r}{LWin up},实现“Win+R”快捷打开运行框;
2、启用SendPlay:使用SendPlay, +{Tab}可确保Shift+Tab在老旧Java应用中正确反向切换焦点;
3、SendPlay执行较慢但最接近人工操作,仅当SendInput失效时才启用;
4、三者不可混用在同一Send语句中,每次调用必须明确指定类型。
五、处理特殊字符与动态内容插入
当需插入变量值、剪贴板内容或实时计算结果时,不能直接写死在Send后,而应使用表达式语法配合花括号展开。
1、定义变量并发送:在脚本开头添加myText := "Dynamic content",再写F4::SendInput, % myText;
2、发送剪贴板内容:使用F5::SendInput, % Clipboard;
3、插入当前时间:写为F6::SendInput, % A_Hour ":" A_Min;
4、所有以%开头的表达式必须置于Send命令末尾且独占参数位。











