1 (изменено: happycore1, 2022-12-06 02:19:13)

Тема: AHK: PixelSearch по двум цветам

Доброго времени всем.
Подскажите пожалуйста возможность усовершенствовать код на поиск двух цветов в указанной области.
Нужно при нахождении зеленого цвета 0x4cb122 продолжать скрипт, при нахождении красного 0x241CED прекращать работу.


While color <> 0x4cb122
{	
	Sleep 333
	PixelSearch, Px, Py, 0, 0, 1000, 1000, 0x4cb122,, Fast
	PixelGetColor, color, Px, Py
}

2

Re: AHK: PixelSearch по двум цветам

Попробуйте так:

color1 := 0x4cb122
color2 := 0x241CED
found1 := found2 := false

Loop {
   Loop 2 {
      if !found%A_Index% {
         PixelSearch, Px, Py, 0, 0, 1000, 1000, color%A_Index%,, Fast
         if ErrorLevel
            break
         found%A_Index% := true
      }
   }
} until found1 && found2

MsgBox, found

Проверьте, учтено ли CoordMode и Variation.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: PixelSearch по двум цветам

Не работает, при появлении зеленого цвета скрипт не продолжает действия.
CoordMode, Pixel, window. Цвет нужный определен.
Есть мысль, что в используемой программе плохо работает зацикливание через loop, есть ли возможность обойтись без него ?

4

Re: AHK: PixelSearch по двум цветам

Я проверил код, у меня с обычным окном он работает, как ожидается. В каких-то приложениях может не определяться или по-другому определяться цвет, цикл тут не при чём. Проверьте работоспособность скрипта в отдельном файле, не вставляя в какой-либо свой скрипт. Если надо, укажите CoordMode и Variation.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: PixelSearch по двум цветам

Видимо действительно проблема у меня, т.к. и в фотошопе не доходит до msgbox.

6

Re: AHK: PixelSearch по двум цветам

Попробовал запустить Ваш код и

^Enter::
While color2 <> 0x111111
{
	Sleep 333
	PixelSearch, Px2, Py2, 110, 110, 999, 777, 0x111111,, Fast
	Sleep 10
	PixelGetColor, color2, Px2, Py2
	msgbox found
}

- в фотошопе с заливкой 0x111111 - в Вашем варианте ничего не происходило, во втором же находил и выводил msg.
В чем может быть проблема ? Подскажите пожалуйста.

7

Re: AHK: PixelSearch по двум цветам

Ваш код ищет только один цвет, наверно он находится. Мой код ищет два цвета, наверно, какой-то из них не находится, и цикл не завершается. Можно проверить так:

color1 := 0xFFFFFF
color2 := 0xFFFFFF
found1 := found2 := false

Loop {
   Loop 2 {
      if !found%A_Index% {
         PixelSearch, Px, Py, 0, 0, 1000, 1000, color%A_Index%,, Fast
         if ErrorLevel
            break
         found%A_Index% := true
      }
   }
} until found1 && found2

MsgBox, found

Ставим оба цвета белыми, открываем какое-либо окно с белым цветом, например блокнот, запускаем код, тут же появляется сообщение.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: PixelSearch по двум цветам

Все понял, было небольшое недопонимание. Мне то нужно было чтобы при нахождении color1 продолжал работать, а при color2 прекращал.

} until found1 or found2

Сменил оператора - ответ получил, спасибо Вам большое!