微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AHK 如何让一个 SetTimer 启动另一个,而不是反转

如何解决AHK 如何让一个 SetTimer 启动另一个,而不是反转

代码的目标:

Timer CheckStart 每 3 秒迭代一次,直到找到选定的颜色。

如果找到像素 - 它会自行停止并启动 CheckStop 计时器,每 3 秒寻找另一个像素。

冲洗并重复

还有一个键绑定来检查最后启动的计时器。

#NoEnv
SendMode Input

checkstate = 0 ;just for checking state
SetTimer,CheckStart,3000
Return

CheckStart:
    PixelSearch,xx,zz,710,460,730,480,0x385982,Alt RGB
    if !ErrorLevel {
        checkstate = 1
        SetTimer,Off
        SetTimer,CheckEnd,3000
        Gosub,CheckEnd
    }
Return

CheckEnd:
    PixelSearch,670,160,725,200,0xE60014,Alt RGB
    if !ErrorLevel {
        checkstate = 0
        SetTimer,CheckStart
    }
Return

^!z:: ; Control+Alt+Z 
    MouseGetPos,MouseX,MouseY
    PixelGetColor,color,%MouseX%,%MouseY%,Alt RGB
    MsgBox (checkstate%) colour: %color%. 
return

我得到了什么:

  1. 在我将所需的颜色提供给第一个计时器之前,键绑定工作延迟,仅在迭代之间显示状态。我可以让它异步吗?
  2. 在我将所需的颜色输入到第一个计时器后,检查器变为“1”,但 CheckEnd 计时器未启动。 (因此键绑定立即开始工作)

我做错了什么?还是只是禁止通过计时器启动计时器?

解决方法

没有Alt这样的像素搜索模式,仅适用于PixelGetColor
我将假设这里的问题只是像素搜索需要永远。
Fast 模式下添加。
因此,不要尝试Alt RGB,而是尝试Fast RGB

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。