Autohotkey 在自动热键中使用Persistent每隔几毫秒连续运行一次脚本
我是新来的,所以我很抱歉这个问题是基本的,但我一直在论坛上尝试技巧,但似乎无法让它们运行 我试图让下面的基本脚本在计时器上连续运行,这样每隔15秒它就会自动运行该函数 基本函数是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
*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