【AHK系列文章】条件语句 - 判断和选择

AHK系列文章

条件语句 - 判断和选择(AHK v1)

脚本基础

尽管通过窗口识别与按键映射,就可以胜任很多工作了,但AutoHotKey仍提供了一些简单的编程功能,对一些稍微复杂的任务,也可以做到得心应手。但要注意一点,AHK的V1和V2在语法上有很大差异,接下来所有内容,均适用于V2版本。

ahk中,通过;进行单行注释,通过**\进行多行注释,而且多行注释符号只有出现在首行时才有效。

从编程的角度来说,任何编程语言都有变量,AHK亦然,但在AHK中,变量不需要声明,且变量名不区分大小写。尽管提供了字符串、数值、布尔等数据类型,但不同类型之间可自由转换,什么时候用什么类型完全视情况而定。其中,数值支持整型和浮点型,且以0x开头的整型表示十六进制。

连击识别

下面写一个简单的脚本热个身,下面这段脚本的含义是,当连续点击不同次数的大写键之后,分别弹出相应的信息

CapsLock::
{
    global
    if (A_ThisHotkey != A_PriorHotkey){
       num := 1
       return
    }
    num += 1
    SetTimer MultiPresses, -500
    Return
}

; 弹出连击次数
MultiPresses(){
    global
    MsgBox "点击" . num . "次"
    num := 0 ; num清零
    Return
}

其中,global表示开启全局模式,从而让num这个变量不局限于某个作用域。

A_ThisHotkeyA_PriorHotkey是内置变量,前者表示最近执行的热键,后者表示上一次执行的热键。

所以if语句表示,如果这一次点击的按键与上一次不同,那么说明只点击了一次CapsLock,故而将num设为1,然后退出。否则,说明上一次点击的也是CapsLock,所以num要加1。

最后调用了SetTimer函数,表示在500毫秒内如果没再按键,那么就执行MultiPresses这个函数。

MultiPresses中,弹出一个MsgBox,后面的**%num%表示提取num这个变量的值,最后重置num**的值。

其效果为
在这里插入图片描述

setTimer

setTimer可在指定的时间间隔内自动重复调用函数,其使用方法为

SetTimer Function, Period, Priority

其中Function即被调用的函数,Period的含义与其取值有关

大于 0,定时器将自动重复,直到脚本明确禁用
小于 0,定时器将只运行一次,上面的案例中,-500表示将在500ms后调用Function, 然后删除定时器。
如果为0,则直接删除这个定时器。
最后一个参数Proirity表示优先级,如果只输入两个参数,则轮不到Proirity

判断和选择

在上面这个脚本中,用到了if表达式,这几乎是所有编程语言必备的分支语句了,表示判断,而且写法也高度相似,在AHK中,完整的表达式如下,如果花括号中是单行语句,则花括号可以省略。

if(){}
if(){}
else{}

此外,AHK支持switch...case语句,其语法格式为

switch SwitchValue, CaseSense
{
case CaseValue1:
    Statements1
case CaseValue2a, CaseValue2b:
    Statements2
default:
    Statements3
}

仍以连击为例,可将上式改写为

CapsLock::
{
    global
    if (A_ThisHotkey != A_PriorHotkey){
       num := 1
       return
    }
    num += 1
    SetTimer MultiPresses, 500
    Return
}

MultiPresses(){
    global
    switch num{
        case 2: MsgBox "您点击两次"
        case 3: MsgBox "您点击三次"
        case 4: MsgBox "您点击四次"
        default: MsgBox "您点击许多次"
    }

    num := 0 ; num清零
    Return
}


[版权声明]:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
[原文链接]:https://blog.csdn.net/m0_37816922/article/details/130917676

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值