所有的脚本文件(.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
暂停脚本所有热键,热字串等, 但 定时器
依然工具, pause
与 suspend
相反, 暂停所有 定时器
,但 热键/热字串
有效
八. 第一个包含 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
, 定时器就会恢复输出调试信息
网友评论