(AHK) 似乎无法使像素颜色声明起作用
(AHK) Can't seem to get a pixel color statement working
我昨天才开始。我试图制作一个脚本,该脚本在检测到像素颜色后执行一系列操作。当 i 运行 它要么忽略 if 语句,要么退出。而且,我希望它寻找像素颜色,直到找到为止。
PixelGetColor, color, 835, 620, Fast
if color = 0xCA3847
{
Random, rand, 15000, 25000
Sleep, %rand%
Click, Down, 1091 493
Click, Up, 1135 493
sleep, 300
^+c::
{
ClipSaved= %clipboard%
send ^c
ClipNew= %ClipSaved% %clipboard%
clipboard = %ClipNew%
}
sleep, 300
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %ClipBoard%
Send ^v
Sleep 1000
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %Clip0%
VarSetCapacity(Clip0, 0)
sleep, 300
Click, 851, 619
}
有几个解决方案。您可以使用循环(但脚本在该循环中无法响应任何内容)或使用 setTimer 重复检查像素颜色,然后执行您想要的操作。我不完全确定您正在尝试明智地完成工作流程,但根据我所见,我认为这可能会满足您的目的。请注意在每个操作序列的末尾使用“return”。
#Persistent
setTimer, CheckforCA3847, 50
Return ; end auto-execute section at top of script.
CheckforCA3847:
PixelGetColor, color, 835, 620, Fast
if (color = 0xCA3847) {
setTimer, %A_ThisLabel%, Off
Random, rand, 15000, 25000
Sleep, %rand%
Click, Down, 1091 493
Click, Up, 1135 493
sleep, 300
setTimer, %A_ThisLabel%, On
}
Return
^+c::
ClipSaved = %clipboard%
send ^c
ClipWait, .25 ; 250 milliseconds
ClipNew = %ClipSaved% %clipboard%
clipboard = %ClipNew%
sleep, 300
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %ClipBoard%
Send ^v
Sleep 1000
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %Clip0%
VarSetCapacity(Clip0, 0)
sleep, 300
Click, 851, 619
Return
除非您试图让每个事件序列“落入”下一个事件序列,否则这些 return 将对您有所帮助。
我昨天才开始。我试图制作一个脚本,该脚本在检测到像素颜色后执行一系列操作。当 i 运行 它要么忽略 if 语句,要么退出。而且,我希望它寻找像素颜色,直到找到为止。
PixelGetColor, color, 835, 620, Fast
if color = 0xCA3847
{
Random, rand, 15000, 25000
Sleep, %rand%
Click, Down, 1091 493
Click, Up, 1135 493
sleep, 300
^+c::
{
ClipSaved= %clipboard%
send ^c
ClipNew= %ClipSaved% %clipboard%
clipboard = %ClipNew%
}
sleep, 300
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %ClipBoard%
Send ^v
Sleep 1000
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %Clip0%
VarSetCapacity(Clip0, 0)
sleep, 300
Click, 851, 619
}
有几个解决方案。您可以使用循环(但脚本在该循环中无法响应任何内容)或使用 setTimer 重复检查像素颜色,然后执行您想要的操作。我不完全确定您正在尝试明智地完成工作流程,但根据我所见,我认为这可能会满足您的目的。请注意在每个操作序列的末尾使用“return”。
#Persistent
setTimer, CheckforCA3847, 50
Return ; end auto-execute section at top of script.
CheckforCA3847:
PixelGetColor, color, 835, 620, Fast
if (color = 0xCA3847) {
setTimer, %A_ThisLabel%, Off
Random, rand, 15000, 25000
Sleep, %rand%
Click, Down, 1091 493
Click, Up, 1135 493
sleep, 300
setTimer, %A_ThisLabel%, On
}
Return
^+c::
ClipSaved = %clipboard%
send ^c
ClipWait, .25 ; 250 milliseconds
ClipNew = %ClipSaved% %clipboard%
clipboard = %ClipNew%
sleep, 300
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %ClipBoard%
Send ^v
Sleep 1000
Click, 767, 558
sleep, 300
Clip0 = %ClipBoardAll%
ClipBoard = %Clip0%
VarSetCapacity(Clip0, 0)
sleep, 300
Click, 851, 619
Return
除非您试图让每个事件序列“落入”下一个事件序列,否则这些 return 将对您有所帮助。