使用Persistent在AutoHotKey中每___ ms连续运行一次脚本

时间:2014-02-15 04:13:09

标签: autohotkey

我很新,所以我为这个基本的问题道歉,但我一直在尝试论坛上的提示,但似乎无法让它们运行。

我正在尝试使用以下基本脚本在计时器上连续运行,因此每15秒它将自动运行该功能。

基本功能是

*1::
Click 287, 536 
Click 228, 405
return 

我尝试延迟运行并继续运行,只在退出应用时停止(只有通过进行以下更改才知道:

Esc::ExitApp

#Persistent
*1::
Click 287, 536 
Click 228, 405
Sleep 15 ;  seconds
return

我错过了什么?我当然会喜欢这个解决方案,但是如果可以解释的话,我可以在将来编写脚本,我会很感激。谢谢:))

4 个答案:

答案 0 :(得分:1)

*1::
loop {
    Click 287, 536 
    Click 228, 405
    Sleep 15000
}
return

Esc::ExitApp

另请参阅loop command了解详情

答案 1 :(得分:1)

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

然后@immo的代码会为你做这个。

关于#Persistent: 如果脚本没有热键或热字符串,脚本进程将从{-1}}或Exit自动执行部分终止。该指令阻止了这一点。

但是当你的脚本有热键(return)时,它已经不会在Exit或者返回时终止(只有当前的线程)。在这种情况下,指令什么都不做。

此外,虽然这只是样式的问题,但我提供了另一个脚本,它几乎完全相同,但如果按*1::它也会暂停点击:

1

注意,如果您要从脚本中删除热键(* 1和Esc),则需要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 指令,否则它将在计时器首次启动之前退出。

而且,最后,你在脚本中做错了什么:

目前,您要求ahk单击该坐标,等待15毫秒(这就是我们写15000的原因),然后返回,这意味着停止运行当前线程,即处理#Persistent按键的线程。

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

另外,我希望你知道,1表示对其他读者的评论,而AutoHotkey忽略了它们,所以你为我们写了“秒”,而不是自动键。

答案 2 :(得分:0)

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

查看ControolClick,ControlSend和GontrolGet系列命令。它们可以更好地控制窗户。

答案 3 :(得分:0)

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

Esc::ExitApp

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

如果您需要更多帮助,那么您应该阅读AutoHotkey文档。