如何用AutoHotkey热字符串逐行发送文本并支持每行发送前编辑
; 初始化全局变量 global LineArray := [] global CurrentLineIndex := 0 global SendingMode := false ; 热字符串触发,*表示不需要结尾按键即可触发 :*:hotstringtrigger:: ; 这里填写你需要逐行发送的所有文本,每行一个元素 LineArray := ["第一行文本", "第二行文本", "第三行文本", "你要发的第N行文本"] CurrentLineIndex := 1 SendingMode := true ; 输入第一行文本 SendInput % LineArray[CurrentLineIndex] return ; 拦截回车键,~表示保留回车键原有功能(即触发聊天软件发送) ~Enter:: if (!SendingMode) { return } CurrentLineIndex += 1 ; 判断是否还有剩余行未发送 if (CurrentLineIndex <= LineArray.Length()) { ; 加短延时避免和发送逻辑冲突,可根据自己设备情况调整数值 Sleep 100 ; 输入下一行文本 SendInput % LineArray[CurrentLineIndex] } else { ; 所有行发送完毕,退出逐行发送模式 SendingMode := false LineArray := [] CurrentLineIndex := 0 } return
实现逻辑说明
- 输入触发词
hotstringtrigger后自动进入逐行发送模式,自动填充第一行文本 - 回车键默认保留原有发送功能,发送当前行后自动填充下一行待发送内容
- 所有预设行全部发送完成后自动退出模式,回车键恢复正常功能
自定义配置方法
- 修改触发词:替换代码中
:*:hotstringtrigger::里的hotstringtrigger为你想要的触发字符串 - 修改待发送文本:修改
LineArray := ["第一行文本", ...]里的数组元素,按顺序添加你需要的所有行即可,支持任意数量行 - 调整延时:如果出现下一行没自动填充的情况,可适当调大
Sleep 100里的数值(单位为毫秒)
注意事项
- 该代码适用于AutoHotkey v1版本,如果使用v2版本需要对应调整语法
- 如果需要中途退出逐行发送模式,可自行额外添加快捷键重置
SendingMode变量为false即可
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

