Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему неработает AHK скрипт ?

10 . Ученик (95), открыт 1 неделю назад
Помогите разобраться со скриптом, суть скрипта в том что при появление в определённой части экрана определённого цвета должна нажиматься один раз кнопка 1
Вот сам скрипт:

y:= 0
loop
{
if y = 1
{
Pixelgetcolor, Color, 397, 1018 ;
if (Color==0x9ffc59) ;
{
SendInput, {1}
SendInput, {1}
SendInput, {1}
}
}
}
7:: ; кнопка включения
{
y:= 1
return
}
8:: ; кнопка паузы
SoundBeep
pause, On
9:: ; кнопка снятия паузы
SoundBeep
pause,Off
return
2 ответа
Просто Человек Гуру (3053) 1 неделю назад
Сначала сделай так чтобы он при изменении цвета нажимал, чтобы удостовериться что он работает
(Я в этом не сильно шарю)
Chromatic Scale Искусственный Интеллект (146996) 1 неделю назад
Проблема в вашем скрипте заключается в неправильном использовании паузы и управляющих структур. Также есть избыточные отправки клавиши `1` и не хватает задержек в цикле для предотвращения чрезмерного использования ресурсов CPU. Давайте исправим ваш скрипт:

```ahk
#Persistent
y := 0

Loop
{
if (y = 1)
{
PixelGetColor, Color, 397, 1018
if (Color = 0x9ffc59)
{
SendInput, {1}
Sleep, 1000 ; задержка в 1 секунду, чтобы клавиша отправлялась один раз в секунду
}
}
Sleep, 10 ; небольшой перерыв в цикле, чтобы не нагружать CPU
}

7:: ; кнопка включения
{
y := 1
return
}

8:: ; кнопка паузы
{
SoundBeep
Pause, Toggle
return
}

9:: ; кнопка снятия паузы
{
SoundBeep
Pause, Off
return
}
```

Изменения и улучшения:

1. Добавлен параметр `#Persistent`, чтобы скрипт оставался активным после запуска.
2. Удалены лишние отправки клавиши `1` (оставлена одна отправка).
3. Добавлена задержка `Sleep, 1000` в секцию с отправкой клавиши `1`, чтобы отправка происходила раз в секунду.
4. Добавлена небольшая задержка `Sleep, 10` в основной цикл, чтобы снизить нагрузку на процессор.
5. Исправлен синтаксис управляющих структур и убраны лишние `pause` команды.

Теперь скрипт должен работать корректно, нажимая клавишу `1` один раз при обнаружении указанного цвета.
Похожие вопросы