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

Autohotkey实现任意输入字符串替换为指定内容的方法咨询

用AutoHotkey实现任意输入字符串替换为指定内容

核心需求:任意输入替换为单一固定文本

要实现捕获任意输入字符串并替换为指定内容,AutoHotkey的InputHook是最合适的工具——它能监听并捕获用户输入的所有字符,再通过触发事件完成替换。

以下是可直接运行的示例代码:

; 设定要替换成的目标文本
targetText := "Quack, Quack quack quack quack quack"

; 创建输入钩子,捕获所有可打印字符,按Enter触发替换
ih := InputHook("V", "{Enter}")
ih.KeyOpt("{All}", "E")  ; 允许所有常规输入按键
ih.OnEnd := Func("ReplaceUserInput")
ih.Start()

ReplaceUserInput(ihObj) {
    global targetText
    ; 删除用户刚输入的所有内容(按退格键次数等于输入字符数)
    SendInput, % "{Backspace " . StrLen(ihObj.Input) . "}"
    ; 输出目标文本
    SendInput, % targetText
    ; 重启钩子,继续监听下一次输入
    ihObj.Start()
}

; 按Esc键终止脚本
Esc::ExitApp

代码说明:

  • InputHook("V", "{Enter}"):V表示输入内容会实时显示,{Enter}设定为替换触发键——用户输入完内容后按Enter,就会触发替换逻辑。
  • ReplaceUserInput函数负责核心替换:先删除原输入,再发送目标文本,最后重启钩子保持监听。

扩展需求:随机替换为预选文本

如果后续要实现随机替换,只需把固定目标文本换成候选数组,用Random函数随机选取即可,示例代码如下:

; 定义预选文本数组
candidateTexts := [
    "Quack, Quack quack quack quack quack",
    "Quack, Snack quack flack flack snack",
    "Flack, Quack snack flack quack snack"
]

ih := InputHook("V", "{Enter}")
ih.KeyOpt("{All}", "E")
ih.OnEnd := Func("RandomReplaceInput")
ih.Start()

RandomReplaceInput(ihObj) {
    global candidateTexts
    ; 删除原输入内容
    SendInput, % "{Backspace " . StrLen(ihObj.Input) . "}"
    ; 生成随机索引(AutoHotkey数组索引从1开始)
    Random, randIdx, 1, candidateTexts.Length()
    ; 发送随机选中的文本
    SendInput, % candidateTexts[randIdx]
    ihObj.Start()
}

Esc::ExitApp

自定义调整建议

  • 触发键可修改:比如把{Enter}换成{Ctrl down}{Enter}{Ctrl up},用Ctrl+Enter触发替换。
  • 隐藏输入内容:如果不想让原输入显示,可把InputHook的第一个参数改成"VI"(I表示忽略输入,不显示原内容)。

内容的提问来源于stack exchange,提问作者hueberto550

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:10:12