You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AHK中PixelGetColor持续返回True问题求助

AutoHotKey脚本问题排查与修复

核心错误分析

  • 误用PixelGetColor命令:PixelGetColor仅用于获取单个坐标的颜色值,无法实现“带偏差的颜色搜索”需求,应使用专门的PixelSearch命令。
  • else语句语法无效:每个if后的else无对应代码块,导致后续所有Send命令不受条件判断约束,无论是否找到目标颜色都会依次执行,最终持续输出12345循环。
  • 冗余的CoordMode设置:CoordMode, Pixel, Screen只需在脚本初始化阶段设置一次,无需每次调用颜色命令前重复执行。
  • return位置错误:return放在循环内部会导致循环提前终止,但因前面的语法问题,该语句实际未生效。

修复后的代码

CoordMode, Pixel, Screen  ; 全局设置像素坐标为屏幕坐标系,仅需执行一次

Loop
{   
    ; 搜索第一个坐标点(200,200),1x1区域,匹配红色(0xFF0000)及偏差3的颜色
    PixelSearch, FoundX, FoundY, 200, 200, 200, 200, 0xFF0000, 3, FastRGB
    if ErrorLevel = 0
        Send, 1
    
    ; 搜索第二个坐标点(400,400)
    PixelSearch, FoundX, FoundY, 400, 400, 400, 400, 0xFF0000, 3, FastRGB
    if ErrorLevel = 0
        Send, 2
    
    ; 搜索第三个坐标点(600,600)
    PixelSearch, FoundX, FoundY, 600, 600, 600, 600, 0xFF0000, 3, FastRGB
    if ErrorLevel = 0
        Send, 3
    
    ; 搜索第四个坐标点(800,800)
    PixelSearch, FoundX, FoundY, 800, 800, 800, 800, 0xFF0000, 3, FastRGB
    if ErrorLevel = 0
        Send, 4
    
    ; 搜索第五个坐标点(1000,1000)
    PixelSearch, FoundX, FoundY, 1000, 1000, 1000, 1000, 0xFF0000, 3, FastRGB
    if ErrorLevel = 0
        Send, 5
}

Numpad9::Pause
Esc::ExitApp

可选优化(按需选择)

如果需要找到任意一个目标颜色后就停止当前循环的后续检查,可在每个Send后添加break:

if ErrorLevel = 0
{
    Send, 1
    break  ; 找到目标后跳出当前循环,不再检查剩余坐标
}

内容的提问来源于stack exchange,提问作者enerjii21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:36:24