【发布时间】:2018-04-17 20:24:30
【问题描述】:
我想用 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”行开头的块正在工作 正确。然而问题是最后一个块 条件语句永远不会执行。 在最后一个块或所有脚本周围添加无限循环 也无济于事。
我最熟悉这种编程风格(这里使用 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::”似乎始终处于就绪状态,我认为它是一个无限循环中的条件“if key_down”, 但我一定是错了?
那么我如何制作这个简单的应用程序,可能无需更改 代码风格? AHK的主循环在哪里?控制流如何工作,如何 管理运行的部分代码的入口点? 如果我只是在“Rbutton::”之后写下所有内容,它可以工作,但它 不是一个人写程序的方式,并且将很难 进一步发展逻辑。
【问题讨论】:
-
这可能是一个很好的阅读:autohotkey.com/docs/Scripts.htm#auto,解释了自动执行部分(你缺少的主循环)。对于其中的多个循环,您可以改用计时器。 autohotkey.com/docs/commands/SetTimer.htm
标签: loops syntax autohotkey main