AI 写出来的 AHK 代码,不应该直接复制运行后就算完成。更稳的做法是把它当成一份待验收的脚本,从热键、权限、路径、等待、异常处理几个角度逐项检查。

这篇文章给你一套简单的验收顺序。以后不管 AI 写的是复制粘贴、窗口控制、文件处理,还是办公自动化,都可以先按这套清单过一遍。

一、先确认版本和入口

第一步不是看功能,而是看脚本能不能按 AHK v1 正常解释。本站内容以 AHK v1 为主,所以 AI 代码最好明确写 v1,并包含基本入口设置。

#Requires AutoHotkey v1.1
#NoEnv
#SingleInstance Force
SetWorkingDir, %A_ScriptDir%

^!t::
    Gosub, DoTask
return

DoTask:
    MsgBox, 开始执行任务
return

看到 AI 代码里有 MsgBox("text")Send "abc"HotIf 这类 v2 风格时,就要警惕版本混写。

二、验收热键:是否会误触发

热键要看三点:是否冲突、是否限制窗口、是否有 return。如果脚本只应该在某个软件里生效,就不要写成全局热键。

#IfWinActive ahk_exe notepad.exe
^j::
    SendInput, AHK66
return
#IfWinActive

验收时可以问自己:这个热键在微信、浏览器、游戏、编辑器里按到会不会出事?如果会,就应该加条件热键。

三、验收权限:目标窗口是不是更高权限

如果目标程序是管理员运行,而 AHK 脚本不是管理员运行,点击、发送按键、控件操作都可能失败。AI 很少主动判断这一点,所以要人工检查。

if !A_IsAdmin
{
    MsgBox, 当前脚本不是管理员权限。若目标窗口是管理员程序,可能操作失败。
}

不要一看到 Send 失效就改成更多延迟。先确认窗口权限、焦点、输入法和目标控件状态。

四、验收路径:不要写死电脑目录

AI 生成代码时,常会把文件路径写死。只要脚本换目录、换电脑、换用户名,就会失效。能跟脚本放一起的文件,优先用 A_ScriptDir

configFile := A_ScriptDir "\config.ini"
if !FileExist(configFile)
{
    MsgBox, 缺少配置文件:%configFile%
    return
}

IniRead, userName, %configFile%, User, Name,

验收路径时,要重点检查文件是否存在、目录是否可写、计划任务运行时工作目录是否变化。

五、验收等待:不要只依赖 Sleep

一个稳定脚本应该等待“条件”,而不是只等待“时间”。窗口自动化尤其如此。

Run, notepad.exe
WinWait, ahk_exe notepad.exe,, 3
if ErrorLevel
{
    MsgBox, 启动失败或窗口未出现
    return
}

WinActivate, ahk_exe notepad.exe
WinWaitActive, ahk_exe notepad.exe,, 2
if ErrorLevel
{
    MsgBox, 窗口没有激活
    return
}

AI 代码里如果连续出现很多 Sleep,就要检查是否能改成 WinWaitWinWaitActiveClipWait 或控件状态判断。

六、验收异常处理:失败时能不能停下来

最危险的脚本不是报错的脚本,而是失败后还继续执行的脚本。比如没找到窗口却继续发送按键,没读到配置却继续写文件。

CopySelectedText(timeout := 1) {
    ClipSaved := ClipboardAll
    Clipboard := ""
    SendInput, ^c
    ClipWait, %timeout%
    if ErrorLevel
    {
        Clipboard := ClipSaved
        ClipSaved := ""
        return ""
    }

    text := Clipboard
    Clipboard := ClipSaved
    ClipSaved := ""
    return text
}

验收函数时,要看它失败时返回什么、调用方有没有判断、有没有恢复现场。剪贴板、窗口焦点、临时文件尤其要注意。

七、一份实用验收清单

  • 版本:是否明确 AHK v1.1,是否混入 v2 语法。
  • 热键:是否有 return,是否需要条件限制。
  • 权限:目标程序是否管理员运行,脚本权限是否匹配。
  • 路径:是否使用 A_ScriptDir,是否检查文件存在。
  • 等待:是否用 WinWait、WinWaitActive、ClipWait 替代盲目 Sleep。
  • 异常:失败后是否 return,是否有提示,是否恢复剪贴板和状态。

AI 生成代码能省时间,但验收不能省。你越会验收,AI 对你的帮助越大;你完全不验收,AI 反而会把问题藏得更深。

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。