我想用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是一个东西 "特别"在这个意义上,一个人必须使用其他方法? 在第一个AHK示例中,似乎" Rbutton ::"总是处于准备状态,我认为它是一个有条件的"如果key_down"在无尽的循环中, 但我一定在想呢?
那么如何制作这个简单的应用程序,可能不会改变 代码风格? AHK的主循环在哪里?控制流程如何工作,如何工作 管理运行的代码部分的入口点? 如果我只是写完" Rbutton ::"它有效,但它 不是一个人写程序的方式,而且很难 进一步发展逻辑。
答案 0 :(得分:1)
就控制流而言,永远不会达到if
语句。据我了解,解释器首先读取脚本顶部的AutoExec部分处理设置,然后对Hotkeys和Directives执行操作,然后执行行代码行,直到它返回Return。您还需要循环代码以不断检查Value是否为真,否则只需检查一次并继续。
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