美文网首页
autohotkey ahk 重点-基础-语法(一)

autohotkey ahk 重点-基础-语法(一)

作者: 极速飞编小王子 | 来源:发表于2020-10-24 17:17 被阅读0次

    所有的脚本文件(.ahk)统一使用带BOM的UTF-8格式

    写ahk, 只要一个 autohotkey.exe(建议使用unicode32位版本), 简单的, 临时的, 直接用记事本就可以, 但如果常用的话,建议还是使用一个有代码高亮及提示的工具更好, 如果需要编译成exe(在没有安装的电脑上直接双击运行), 那么还需要ahk2exe.exe(支持命令行调用), 如果对语法不是很熟悉或者写的脚本比较复杂, 带个 chm文档 是个好主意!

    ahk大多数的变量,命令,指令等都不区分大小写

    AutoHotkey 程序本身不做任何事情; 它需要一个脚本来告诉它该做什么. 脚本只是一个简单的以 .ahk 作为扩展名的文本文件, 其中包含了程序的指令, 像配置文件, 但功能更强大. 一个脚本可以执行一个动作然后退出, 但大多数脚本定义了一些[热键], 当热键按下时, 热键后面跟着的一个或多个动作将会执行.

    ahk有很多的自定义的语法, 可能和其它的语言都不太相同, 如果没有编程经验还好, 有的话,反而容易搞混! 如:

    一. # 开头表示指令, 通常是进行一些预处理或者设置, 比如

    #NoEnv  ;不检查空变量是否为环境变量(建议所有新脚本使用).
    #NoTrayIcon  ;不显示[托盘图标]
    #Hotstring EndChars `n `t  ;自定义热字串终结符
    

    二. 内置命令, 注意它的使用方式, 和函数并不相同, 一般地, 命令直接 写在脚本中调用, 功能与函数调用类似, 但不使用圆括号, 而是直接写名字和逗号",", 第一个逗号","-也就是命令与参数之间-可以省略, 参数不需要引号, 他们都是字符串, 如果需要引用变量, 就使用百分号"%", 如果只有一个变量,也可以使用百分号表达式, 如果使用"%"括住,则两边不能有空格, 如果是一个"%" 则左边必须要有空格或者tab,如,下面的两个msgbox是相同的:

    msgbox, % A_Tickcount
    msgbox, %A_Tickcount%
    run, notepad
    

    上面的 run, notepad 将会打开记事本, 没有 .exe 也可以

    三. 定义标签使用 一个 冒号结尾, 语句块(代码段)以 return 结束, 使用 goto, gosub调用:

    myLabel:
      ;你的代码
    return
    

    四. 定义热字串使用两个冒号结尾, 以 return 束,如:

    ::abc::
      msgbox, 666
    return
    :*:kk::msgbox, 666
    

    上面的代码中, 开头的两个冒号 :: 表示使用默认选项, 当你按下abc后,不会马上触发,而是需要你按下一个终结符, 比如 tab, enter
    使用 * 表示不需要按终结符, kk按下后, kk会被删除, 然后替换成 msgbox, 666, 要想显示一个对话框(即将 msgbox, 666 当作代码执行),需要加入x选项, 即 :*X:kk::msgbox, 666, 更多的选项, 请参考 帮助文档

    五. 定义函数没有关键字, 直接使用下面的格式(有默认参数的需要放到后面):

    函数名(参数1,参数2, 参数3="默认值", 参数4:="这样设置默认值也一样"){
     ;你的代码
     return "返回值"  ;字符串需要引号
    }
    

    六. 定义延续片段:

    变量名 = 
    (
    这是
    延续
    片段
    可以很方便 666
    )
    
    ::abc::
    (
    大段的
    文本
    替换
    可以
    使用
    这种方式
    )
    
    

    七. 使用 ExitApp 退出脚本, suspend 暂停脚本所有热键,热字串等, 但 定时器 依然工具, pausesuspend 相反, 暂停所有 定时器,但 热键/热字串有效
    八. 第一个包含 suspend/pause 的热键总是有效, 方便切换,比如下面的代码:

    #SingleInstance force
    SetTimer, test, 1000
    pause::pause
    #pause::Suspend
    ^p::msgbox, 888
    test:
        OutputDebug, % A_TickCount
    return
    

    上面的代码中, 定时器每秒向调试器输出当前的 tickcount , 按下 pause时, 脚本将暂停, 定时器不会再输出调试信息, 但此时按下 ^p 还是会弹出 对话框 888, 因为 pause 不暂停 热键/热字串, 再按下 #pause 后, 热键/热字串 也会被暂停, 此时再按 ^p 就不会弹出对话框, 但 #pause还是有效的, 再按一下即可恢复, 然后再按 pause, 定时器就会恢复输出调试信息

    可以使用#include<tools>方式包含公共脚本到本脚本中, 一般地, 建议放到最后, include具体用法及注意点,请参考文档

    相关文章

      网友评论

          本文标题:autohotkey ahk 重点-基础-语法(一)

          本文链接:https://www.haomeiwen.com/subject/psoimktx.html