Autohotkey 在自动热键中使用Persistent每隔几毫秒连续运行一次脚本

Autohotkey 在自动热键中使用Persistent每隔几毫秒连续运行一次脚本,autohotkey,Autohotkey,我是新来的,所以我很抱歉这个问题是基本的,但我一直在论坛上尝试技巧,但似乎无法让它们运行 我试图让下面的基本脚本在计时器上连续运行,这样每隔15秒它就会自动运行该函数 基本函数是 *1:: Click 287, 536 Click 228, 405 return 我尝试延迟运行它,并继续运行,仅在退出应用程序时停止(我知道的唯一方法是进行以下更改: Esc::ExitApp #Persistent *1:: Click 287, 536 Click 228, 405 Sleep 15

我是新来的,所以我很抱歉这个问题是基本的,但我一直在论坛上尝试技巧,但似乎无法让它们运行

我试图让下面的基本脚本在计时器上连续运行,这样每隔15秒它就会自动运行该函数

基本函数是

*1::
Click 287, 536 
Click 228, 405
return 
我尝试延迟运行它,并继续运行,仅在退出应用程序时停止(我知道的唯一方法是进行以下更改:

Esc::ExitApp

#Persistent
*1::
Click 287, 536 
Click 228, 405
Sleep 15 ;  seconds
return
我遗漏了什么?我当然会喜欢这个解决方案,但如果它能被解释,以便我将来可以编写脚本,我将不胜感激。谢谢:)


有关详细信息,请参见

,您希望脚本在您按下任何包含“1”的组合键后,每隔15秒开始单击该坐标,对吗

然后@immo的代码将为您执行此操作

关于: 如果脚本没有热键或热字符串,脚本进程将在自动执行部分的退出或返回时终止。本指令防止了这种情况

但由于您的脚本具有热键(
*1::
),因此它不会在退出或返回时终止(只有当前线程会终止)。在这种情况下,指令什么也不做

此外,尽管这只是风格的问题,但我提供了另一个脚本,它的作用几乎相同,只是如果按
1
,它也会暂停单击:

toggleTimer=1
*1::
    If toggleTimer
        SetTimer ClickThem, 15000
    else
        SetTimer ClickThem, Off
    toggleTimer:=1-toggleTimer
return

Esc:: ExitApp

ClickThem:
    Click 287, 536 
    Click 228, 405
return
请注意,如果要从脚本(*1和Esc)中删除热键,则需要
#Persistent
指令,否则它将在计时器首次启动之前退出

最后,谈谈你在剧本中做错了什么:

目前,您要求ahk单击该坐标,等待15毫秒(这就是为什么我们要写15000),然后返回,这意味着停止运行当前线程,即处理
1
keypress的线程

但是你需要重复点击,这样你就有了选择。 首先是一个循环,就像immo提供的一样。 另一个是定时器


还有,我希望你知道,
表示其他读者的评论,AutoHotkey会忽略它们,因此您为我们而不是AutoHotkey写了“秒”。

单击是在活动窗口中执行的。如果要单击其他窗口中的坐标,则必须将其激活

请看ControolClick、ControlSend和GontrolGet系列命令。它们提供了更好的窗口控制。

添加
#Persistent
并不能满足您的需要;它只是使脚本在到达
ExitApp
之前不会关闭。另外,
Sleep 15;秒
也不会做你想做的事;您编写的内容将告诉脚本仅等待15毫秒,而从分号到行尾的所有内容都将被忽略,因为它被视为注释。因此,您需要做的是将热键的代码放入一个循环中。然后,将睡眠陈述中的15乘以1000。之后,您的代码应该是这样的:

Esc::ExitApp

#Persistent
*1::
    Loop
        {
         Click 287, 536 
         Click 228, 405
         Sleep 15000
        }
    return
如果您需要更多帮助,那么您应该真正阅读AutoHotkey文档

Esc::ExitApp

#Persistent
*1::
    Loop
        {
         Click 287, 536 
         Click 228, 405
         Sleep 15000
        }
    return