AutoHotkey实现:按键触发鼠标位置设置PixelSearch区域并搜索颜色移动鼠标
AutoHotkey 基于鼠标位置生成PixelSearch搜索区域的修正方案
需求说明:按下1键时,以当前鼠标所在坐标作为搜索矩形的左上角(X1,Y1),右下角(X2,Y2)为鼠标坐标分别加100的位置,在该矩形区域内查找颜色0xFAFF00;找到目标颜色后将鼠标移动到对应位置,未找到则弹出错误提示。
原代码存在的核心问题:使用=进行变量赋值时,AHK会将右侧内容当作字符串处理,而非数值计算。比如X1 = mX实际是把字符串"mX"赋值给X1,而非mX变量存储的鼠标坐标数值,这会导致PixelSearch无法识别正确的搜索区域。
修正后的代码:
#SingleInstance, Force SendMode, Input SetBatchLines, -1 SetWorkingDir, %A_ScriptDir% 1:: MouseGetPos, mX, mY ; 使用 := 进行数值赋值,确保获取到实际坐标并计算 X1 := mX Y1 := mY X2 := mX + 100 Y2 := mY + 100 ; 执行像素搜索,参数依次为:找到的X/Y变量、搜索范围、目标颜色、颜色偏差、搜索模式 PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, 0xFAFF00, 1, Fast if (ErrorLevel = 0) { MouseMove, OutputVarX, OutputVarY, 1 ; 1表示移动速度,数值越大越慢 } else { MsgBox, 未找到目标颜色 Sleep, 500 } return 2::Reload ; 按下2键重新加载脚本 3::ExitApp ; 按下3键退出脚本
关键修改说明:
- 替换变量赋值运算符:将
=改为:=,这是AHK中用于数值/表达式赋值的运算符,能正确读取mX、mY的数值并完成X2、Y2的增量计算。 - 优化提示文本:将原MsgBox的"error"改为更清晰的"未找到目标颜色",便于理解执行结果。
内容的提问来源于stack exchange,提问作者nickg
相关产品推荐
相关产品推荐

