首页 > 解决方案 > PixelSearch 偶尔找不到 PixelGetColor 找到的颜色

问题描述

我试图创建一个脚本,该脚本将在检测到颜色但遇到 PixelSearch 问题时执行操作。

我使用的是 PixelSearch 而不是与 PixelGetColor 匹配,因为颜色是透明的,因此需要 PixelSearch Variation 功能。

在遇到找不到绝对存在的颜色的问题后,我尝试创建一个脚本来使用 PixelGetColor 查找颜色,然后将其传递给 PixelSearch 并以 0 变化搜索它。

这确保了颜色确实存在,脚本大部分时间都在工作,但经常以 ErrorLevel 1 响应(未找到,这应该是不可能的)。

我在非活动和活动窗口上都工作过,但偶尔在两者上都失败了。

该脚本发布在下面,任何人都可以解释为什么会发生此问题所有测试颜色都是静态的,并且不会更改没有透明度的图像。

为什么会出现此错误并且可以修复?

CoordMode, Pixel,Screen
CoordMode,Mouse,Screen

*$PGDN::
    MouseGetPos, PosX, PosY
    PixelGetColor, cRGB , %PosX%, %PosY%,RGB
    PixelGetColor, cBGR , %PosX%, %PosY%
    PixelSearch,Colour_SearchX,Colour_SearchY,PosX+10,PosY+10,PosX-10,PosY-10,cRGB,RGB Fast
    If ErrorLevel = 0
    {
        Search_Result:= "Found"
    }
    Else
    {
        Search_Result:= "Not Found"
    }
    MsgBox,% PosX ", " PosY "`nRGB: (" cRGB " ) - BGR: (" cBGR ")"  "`n" Search_Result ":" cRGB " at: " Colour_SearchX "," Colour_SearchY
Return

标签: searchcolorsautohotkey

解决方案


此代码适用于我所做的更改包括

PixelSearch,Colour_SearchX,Colour_SearchY,PosX-10,PosY-10,PosX+10,PosY+10,cRGB,RGB Fast

这是因为搜索区域编号错误(X1,Y1 值大于 X2,Y2)

CoordMode,Pixel,Screen
CoordMode,Mouse,Screen

*$PGDN::
    MouseGetPos, PosX, PosY
    PixelGetColor, cRGB , %PosX%, %PosY%,RGB
    PixelGetColor, cBGR , %PosX%, %PosY%
    PixelSearch,Colour_SearchX,Colour_SearchY,PosX-1,PosY-1,PosX+1,PosY+1,cRGB,50,RGB Fast

    If ErrorLevel = 0
    {
        Search_Result:= "Found"
    }
    Else
    {
        Search_Result:= "Not Found"
    }
    MsgBox,% PosX ", " PosY "`nRGB: (" cRGB " ) - BGR: (" cBGR ")"  "`n" Search_Result ":" cRGB " at: " Colour_SearchX "," Colour_SearchY
Return

推荐阅读