Здравствуйте!
У меня вопрос по програмке.
В ней я нахожу точку экрана через PixelSearch, навожу курсор на пиксель
затем делаю PixelGetColor - на те же координаты - которые выдал PixelSearch.
Почему в первом случае всё ок, а в последующих данные PixelSearch неверные,
т.е. PixelSearch находит координаты hex пикселя, а PixelGetColor говорит что на тех координатах другой hex.
(в msgbox на вопрос Завершить? надо отвечать "нет" )
Вся разница между функциями GETPIX() / GETPIX2() /GETPIX3() в том с какого направления ведется поиск
PixelSearch(@DesktopWidth, @DesktopHeight, 0, 0, "0x" & $hex)
(в справке прочитал)
http://autoit-script.ru/index.php?action=downloads;sa=downfile&id=185
Цель моего скрипта в том что бы определить является ли hex точки на экране уникальным или есть ещё.
Уж простите пока только так научился.
У меня вопрос по програмке.
В ней я нахожу точку экрана через PixelSearch, навожу курсор на пиксель
затем делаю PixelGetColor - на те же координаты - которые выдал PixelSearch.
Почему в первом случае всё ок, а в последующих данные PixelSearch неверные,
т.е. PixelSearch находит координаты hex пикселя, а PixelGetColor говорит что на тех координатах другой hex.
(в msgbox на вопрос Завершить? надо отвечать "нет" )
Код:
global $hex
$clip = ClipGet()
If StringLen($clip) = 6 then $hex = $clip
;сначала через inputbox вводим HEX цвета и ищем его координаты цветового пикселя,
;потом на найденный hex-пиксель наводим мышкой
$hex = inputbox("Введиде HEX:", "HEX код цвета 6 знаков", $hex)
If StringLen($hex) = 6 then
$px = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, "0x" & $hex)
IF NOT @ERROR THEN
MouseMove($px[0], $px[1])
;в следующей строке берем hex-цвет пикселя с того места, куда неведен курсор
;(согласно PixelSearch а затем MouseMove это должен быть пиксель нашего цвета)
;и в первой части кода всё ок, перейдем в GETPIX2 ->
$txt = Hex(PixelGetColor($px[0], $px[1]))
$msg = MsgBox(4, "Найден #1# " & $px[0] & ", " & $px[1], $hex & " = " & $txt & @LF & "Завершить?" )
if $msg = 7 then GETPIX2()
Else
MsgBox(0, "Не найден", $hex)
EndIf
Else
MsgBox(0, "Выход", $hex)
Endif
;функция делает то же самое, только с другого угла, hex у неё из предыдущего inputbox
func GETPIX2()
$px = PixelSearch(@DesktopWidth, @DesktopHeight, 0, 0, "0x" & $hex)
IF NOT @ERROR THEN
MouseMove($px[0], $px[1])
$txt = Hex(PixelGetColor($px[0], $px[1]))
;ВОПРОС - почему $hex НЕ РАВНО $txt ?
;PixelSearch находит координаты hex пикселя, а PixelGetColor говорит что на тех координатах другой hex.
$msg = MsgBox(4, "Найден #2# " & $px[0] & ", " & $px[1], $hex & " = " & $txt & @LF & "Завершить?" )
if $msg = 7 then GETPIX3()
EndIf
EndFunc
func GETPIX3()
$px = PixelSearch(@DesktopWidth, 0, 0, @DesktopHeight, "0x" & $hex)
IF NOT @ERROR THEN
$txt = Hex(PixelGetColor($px[0], $px[1]))
MouseMove($px[0], $px[1])
$msg = MsgBox(4, "Найден #3# " & $px[0] & ", " & $px[1], $hex & " = " & $txt & @LF & "Завершить?" )
if $msg = 7 then GETPIX4()
EndIf
EndFunc
func GETPIX4()
$px = PixelSearch(0, @DesktopWidth, @DesktopHeight, 0, "0x" & $hex)
IF NOT @ERROR THEN
$txt = Hex(PixelGetColor($px[0], $px[1]))
MouseMove($px[0], $px[1])
$msg = MsgBox(0, "Найден #4# " & $px[0] & ", " & $px[1], $hex & " = " & $txt & @LF & "Поиск окончен" )
EndIf
EndFunc
Вся разница между функциями GETPIX() / GETPIX2() /GETPIX3() в том с какого направления ведется поиск
PixelSearch(@DesktopWidth, @DesktopHeight, 0, 0, "0x" & $hex)
(в справке прочитал)
http://autoit-script.ru/index.php?action=downloads;sa=downfile&id=185
Цель моего скрипта в том что бы определить является ли hex точки на экране уникальным или есть ещё.
Уж простите пока только так научился.