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 也可以关联函数或函数对象.

上一篇下一篇

猜你喜欢

热点阅读