autohotkey 线程入门

时间:2024-03-07 16:00:58
  • 自动热键本身不做任何事情;它需要一个脚本来告诉它要做什么,每个热键后面都跟着一个或多个热键,当按下热键时可以采取这些操作。
  • 脚本是一个简单的纯文本文件,扩展名为.ahk,包含程序的指令,类似于配置文件,但是功能更强大。
  • 脚本可以只执行一个操作,然后退出。多数脚本都定义了许多热键,每个热键后面都跟着一个或多个热键,当按下热键时可以采取这些操作。
  • https://www.autohotkey.com/docs/AutoHotkey.htm
  • 复杂功能设计需要多线程和定时器、中断、线程同步控制
  • 定时器+信号量
    XXX up::
    {
    if ( XXX_flag ) {
    ...
    return
    }
     
    XXX_flag :=True
    ...
    SetTimer, XXX_time, -time
    return
    }
    XXX_time:
    {
    ...
    XXX_flag :=False
    return
    }
    异步检测 InputHook 或者 异步通知
    异步通知
    ~XXX::
    {
    if ( XXX_msg ) {
    ...
    return
    }
    SetTimer, XXX_time, -time
    XXX_msg :=True
    ...
    return
    }
    ~XXX up::
    {
    ...
    if( !XXX_msg )
    { }
    }
    XXX_time:
    {
    ... ; chck msg
    }
    状态机套娃。
    MButton::return
    MButton up::
    {
    if( !MButton_flag ) {
    ..
    MButton_flag :=True
    return
    }
    ...
    MButton :=False
    return
    }
    一个硬件标志位配合时间信息可以跳转执行的多个服务数
    状态机+异步信号,
    子状态接收异步信号跳往对应下一态
    定时器检测硬件标志,配合状态机1跳转相应状态,单击、双击、多次击键。
    定义:单击按键,双击按键,3击及其它。