AHK 中的基本应用程序 - 主循环和流量控制
Basic app in AHK - main loop and flow control
我想用AHK写一个小应用,但是我面临
难以理解的基础知识
流控制和语法。
所以基本上这个问题可以理解为——我如何写一个
AHK 中的简单程序?
这是一个非常简单的程序,必须切换
使用鼠标右键标记 "pan_on"。
然后根据这个值做一些事情。
pan_on := false
Esc:: ExitApp
Rbutton::
tooltip, "button pressed"
pan_on := true
return
Rbutton up::
tooltip, "released"
pan_on := false
return
if (pan_on = true)
{
tooltip, "XXXXXXXXEngage"
}
以 "Rbutton " 行开头的块正在运行
正确。然而,问题是最后一个块
永远不会执行条件语句。
在最后一个块或所有脚本周围添加无限循环
doeas 也没有帮助。
我最熟悉这种编程风格(这里使用 Python 语法):
pan_on = False
while True:
pan_on = False
if key_down[Esc]:
break
if key_down[Rbutton]:
pan_on = True
if key_up[Rbutton]:
pan_on = False
...
if pan_on:
draw_something ()
所以我想不出有什么不同
写一个程序,但似乎 autohotkey 是什么东西
"special" 在这个意义上必须使用其他方法吗?
在第一个 AHK 示例中,"Rbutton::" 似乎始终处于就绪状态,我将其视为无限循环内的条件 "if key_down",
但我一定对此有误解?
那么我如何制作这个简单的应用程序,可能不需要更改
代码风格?
AHK 的主循环在哪里?控制流程如何工作,如何
管理 运行 部分代码的入口点?
如果我只是在 "Rbutton::" 之后写下所有内容,它就可以工作,但它
不是一个人如何编写程序,而且很难
进一步发展逻辑。
就控制流而言,您的 if
语句永远不会到达。据我了解,解释器首先读取脚本顶部的 AutoExec 部分,该部分处理设置,然后根据热键和指令执行操作,然后逐行执行代码,直到遇到 Return。您还需要循环代码以不断检查值是否为真,或者它只会检查一次并继续。
pan_on := false
loop {
if (pan_on = true)
tooltip, "XXXXXXXXEngage"
}
Esc:: ExitApp
Rbutton::
tooltip, "button pressed"
pan_on := true
return
Rbutton up::
tooltip, "released"
pan_on := false
return
我想用AHK写一个小应用,但是我面临 难以理解的基础知识 流控制和语法。 所以基本上这个问题可以理解为——我如何写一个 AHK 中的简单程序?
这是一个非常简单的程序,必须切换 使用鼠标右键标记 "pan_on"。 然后根据这个值做一些事情。
pan_on := false
Esc:: ExitApp
Rbutton::
tooltip, "button pressed"
pan_on := true
return
Rbutton up::
tooltip, "released"
pan_on := false
return
if (pan_on = true)
{
tooltip, "XXXXXXXXEngage"
}
以 "Rbutton " 行开头的块正在运行 正确。然而,问题是最后一个块 永远不会执行条件语句。 在最后一个块或所有脚本周围添加无限循环 doeas 也没有帮助。
我最熟悉这种编程风格(这里使用 Python 语法):
pan_on = False
while True:
pan_on = False
if key_down[Esc]:
break
if key_down[Rbutton]:
pan_on = True
if key_up[Rbutton]:
pan_on = False
...
if pan_on:
draw_something ()
所以我想不出有什么不同 写一个程序,但似乎 autohotkey 是什么东西 "special" 在这个意义上必须使用其他方法吗? 在第一个 AHK 示例中,"Rbutton::" 似乎始终处于就绪状态,我将其视为无限循环内的条件 "if key_down", 但我一定对此有误解?
那么我如何制作这个简单的应用程序,可能不需要更改 代码风格? AHK 的主循环在哪里?控制流程如何工作,如何 管理 运行 部分代码的入口点? 如果我只是在 "Rbutton::" 之后写下所有内容,它就可以工作,但它 不是一个人如何编写程序,而且很难 进一步发展逻辑。
就控制流而言,您的 if
语句永远不会到达。据我了解,解释器首先读取脚本顶部的 AutoExec 部分,该部分处理设置,然后根据热键和指令执行操作,然后逐行执行代码,直到遇到 Return。您还需要循环代码以不断检查值是否为真,或者它只会检查一次并继续。
pan_on := false
loop {
if (pan_on = true)
tooltip, "XXXXXXXXEngage"
}
Esc:: ExitApp
Rbutton::
tooltip, "button pressed"
pan_on := true
return
Rbutton up::
tooltip, "released"
pan_on := false
return