autohotkey ahk 重点-基础-语法(二)
2020-10-25 本文已影响0人
极速飞编小王子
一. 标签
(普通标签, 热字串标签, 快捷键标签) 和 函数
都可以包含语句块, 实现某种功能, 但在大量调用时(比如在循环中百万次调用), 标签
略快于函数调用, 但其只能使用全局变量
(当大量交叉访问调用时, 容易造成混乱), 函数的一个重要优势
则是可以使用 局部变量
, 比如
#SingleInstance force
SetTimer, test, 1000
!f::
myvar := A_TickCount
return
test:
OutputDebug, % myvar
return
使用dbgview.exe查看, 原来是没有输出的, 按一次!f(alt + f)
后就有输出
二. 标签
无法传递参数
, 局部变量
及 返回值
, 函数
则可以.
三. 标签
后面也可以使用函数
, 它的好处是可以使用 局部变量
, 减少变量命名
上的烦恼和冲突
#SingleInstance force
SetTimer, test, 1000
!f::
abc(){
mm := 666 ;函数变量默认为局部变量, 外面访问不到
global myvar := A_TickCount ;强制定义为全局, 下面的test标签中可以访问到它
}
test:
OutputDebug, mm %mm% myvar %myvar%
return
(下面内容来自文档)
函数热键[v1.1.20+]
紧跟在热键标签后面的函数, 通过简单的定义, 一个或多个热键可以关联到此函数, 如下例所示:
; Ctrl+Shift+O 在资源管理器中打开包含文件夹.
; Ctrl+Shift+E 打开文件夹并选中当前编辑文件.
; 支持 SciTE 和 Notepad++.
^+o::
^+e::
editor_open_folder() {
WinGetTitle, path, A
if RegExMatch(path, "\*?\K(.*)\\[^\\]+(?= [-*] )", path)
if (FileExist(path) && A_ThisHotkey = "^+e")
Run explorer.exe /select`,"%path%"
else
Run explorer.exe "%path1%"
}
[v1.1.28+]: 热字串也可以这样定义. 可以将多个热键或热字串组合在一起, 以调用相同的函数.
在 热键/热字串 标签或标签和函数之间仅允许空白, 注释或者指令. 以这种方式定义的热键/热字串标签对 IsLabel, Gosub 或其他命令是不可见的; 然而, 即使关联了函数, 自动执行段也会以第一个热键/热字串结束.
使用函数的的主要好处是可以使用局部变量, 当两个或多个热键为了不同的目的使用相同的变量名时, 避免了冲突. 它也鼓励自我记录热键, 就像上面的代码在函数内描述热键.
Hotkey 也可以关联函数或函数对象.