teadrinker, извините, видит Бог, старался придерживаться правила об избыточном цитировании. Да и переменной "n", отражавшей количество совпадений, в этой редакции, увы, нет. От себя добавил лишь горячую клавишу запуска. При запуске скрипта, либо ничего не происходит, ибо, вероятно цвет не найден, либо курсор уезжает на 0, 0 коодинаты. С Вашего позволения, напомню, что мне нужно в небольшом прямоугольнике координат сосчитать пиксели одного цвета, в идеале обозвав их количество Переменной_1, а количество близких по спектру Переменной_2, и исходя из количества найденных пикселей в области, ( 30 точных, 65 приблизительных, например), совершить любое действие. И если можно, поясните пожалуйста, можно ли вместо цифр координат, запихнуть названия переменных, отражающих координаты, с учетом того, что последние всякий новый Loop моего скрипта, будут меняться динамически?
; как сместить курсор на заданный или близкий по оттенку цвет, в диапазоне координат экрана от x79 y166 до x140 y230?
; tochka_x := 383
; tochka_y := 167
F6::
SetBatchLines, -1
CoordMode, Pixel, screen
CoordMode, Mouse, screen
pToken := Gdip_Startup()
SearchPixel := 0x3641FC
variation := 0x1
pBitmap := Gdip_BitmapFromScreen("79|166|" 140 - 79 "|" 230 - 166)
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap)
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)
Start := A_TickCount
bgr1 := SearchPixel
loop % width + (n:=0)
{
A_Index_X := A_Index-1
loop % height
{
bgr2 := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
if !(abs((bgr1 & 0xff) - (bgr2 & 0xff)) > variation)
&& !(abs(((bgr1 >> 8) & 0xff) - ((bgr2 >> 8) & 0xff)) > variation)
&& !(abs(((bgr1 >> 16) & 0xff) - ((bgr2 >> 16) & 0xff)) > variation)
{
MouseMove, A_Index_X, A_Index-1, 20
Break 2
}
}
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)
Return