PixelSearch - звучит сигнал тревоги, хотя цвет не отображается в 600 x 800. Что я делаю не так? - PullRequest
0 голосов
/ 28 февраля 2019

Как только я запускаю приведенный ниже скрипт, звучит сигнал тревоги, даже если ffff00 не отображается в квадрате 600 x 800.Что-нибудь выскакивает как неправильное?

#NoEnv
#SingleInstance,Force
CoordMode,Pixel,Screen

found=0
Gui,Add,Button,GSILENCE,Silence

colors=ffff00
Loop
{
Loop,Parse,colors,`,
{
PixelSearch, OutputVarX, OutputVarY, 600, 600, 800, 800, ffff00, Fast RGB
If (ErrorLevel=0)
{
  Gui,Show
  found=1
  Loop
  {
    SoundPlay,*0
    If found=0
      Break
    Sleep,1000
  }
} 
Sleep,10000
Send,{F5}
}
}

SILENCE:
found=0
Gui,Hide
Return

1 Ответ

0 голосов
/ 01 марта 2019

Когда я запускал твой код без редактирования, у меня возникали те же проблемы, что и у тебя.Похоже, что проблема в вашем коде находится в строке PixelSearch.На самом деле есть две проблемы:

  1. Первая состоит в том, что ColorID должно быть шестнадцатеричным значением, что, в вашем случае, означает, что вы должны добавить 0x перед вашимтекущая стоимость.В настоящее время AHK просматривает значение переменной с именем "ffff00", которой не присвоено значение.Я не уверен, почему, но, видимо, это соответствует всему (а не ничего, как я ожидал).
  2. Вторая проблема заключается в том, что вам нужна дополнительная запятая между вариантом и режимом или, в вашемслучай, между вашим цветом и Fast RGB.Хотя я не уверен, что «быстрая» часть действительно сработала, часть «RGB» определенно не сработала, поскольку она соответствовала голубому вместо желтого.

Вот исправленная строка, котораязаставил скрипт работать на меня:

PixelSearch , OutputVarX , OutputVarY , 600 , 600 , 800 , 800 , 0xffff00 ,, Fast RGB

Обратите внимание, что если вы собираетесь циклически проходить через серию цветов, вы захотите сохранить их в виде шестнадцатеричных значений 0x (или в виде строки с разделителями, как у вас естьили как массив фактических шестнадцатеричных значений - AHK кажется снисходительным).

...