如何在AHK脚本中添加像素颜色判断实现点击标记功能?
解决AHK脚本像素判断与点击问题
你的原代码无法运行是因为AHK不支持pixel is not white这种语法,需要用标准的PixelGetColor命令获取像素颜色后再做判断,同时还要注意页面加载的延迟问题。以下是修正后的完整脚本及说明:
修正后的脚本(相对位置版)
!o:: ; 打开谷歌日历新窗口 Run, chrome.exe "https://calendar.google.com/calendar/u/0/r/day/2023/7/10" --new-window ; 等待页面加载完成,根据网络情况调整延迟时间(单位:毫秒) Sleep, 5000 ; 移动鼠标到标记的相对位置 MouseMove, -300, 300, 10, R ; 获取当前鼠标位置的像素颜色 PixelGetColor, pixelColor, %A_CursorX%, %A_CursorY% ; 对比颜色(白色的AHK格式为0xFFFFFF,若你的标记勾选色不同需替换) if (pixelColor != 0xFFFFFF) { ; 点击当前位置 Click } return
关键修正点
- 添加页面加载延迟:Chrome打开网页需要时间,必须用
Sleep等待页面完全加载,否则目标位置的像素还未加载出来,操作会失效。 - 正确获取像素颜色:使用
PixelGetColor命令获取指定坐标的颜色,保存到变量后再判断。 - 语法修正:AHK的条件判断需用
if (变量 != 目标值)的格式,不能用自然语言式的pixel is not white。 - 颜色值确认:如果不确定标记勾选时的颜色,可右键AHK托盘图标打开Window Spy,将鼠标移到标记上查看
Pixel Color的值,替换脚本中的0xFFFFFF。
更稳定的绝对坐标版
如果标记在页面上的位置是固定的,建议直接使用绝对坐标,避免相对移动受当前鼠标位置影响:
!o:: Run, chrome.exe "https://calendar.google.com/calendar/u/0/r/day/2023/7/10" --new-window Sleep, 5000 ; 替换为标记的绝对坐标 targetX := 800 targetY := 400 PixelGetColor, pixelColor, %targetX%, %targetY% if (pixelColor != 0xFFFFFF) { Click, %targetX%, %targetY% } return
内容的提问来源于stack exchange,提问作者Frits Verstraten
相关产品推荐
相关产品推荐

