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

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

作者: 极速飞编小王子 | 来源:发表于2020-10-25 09:54 被阅读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 也可以关联函数或函数对象.

    相关文章

      网友评论

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

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