1

Тема: AHK: Помогите найти ошибку.

Приветствую!

Сделал код, знания ниже базовых, почти всё работает, но кое-что нет.

Суть кода в следующем:
При нажатии F1 идёт частое нажатие цифр 2 и 3. F2 - пауза, F3 - возобновление.
При нажатии F4 идёт частое нажатие цифр 4 и 5. F5 - пауза, F6 - возобновление.

По-сути, 2 простейшие задачи в одном коде.

В чём проблема?
При переходе от первой части кода (нажатие цифр 2 и 3) к части где идёт нажатие 4 и 5 - уже не возможно вернуться, нажатием горячей клавиши F1 на первую часть кода, чтобы снова выполнялось нажатие клавиш 2 и 3. Вторая же часть кода продолжает работать отлично (пауза и стоп).

Где ошибка? или если можете - исправьте недочёт, пожалуйста, моих знаний не хватает пока что, спасибо.


F1::
Loop {
  Send {sc3}
  Sleep 70
  Send {sc4}
}
Return
F2::                 ; Приостановка по F2.
  If not Stop
  {
    Stop := True
    Pause
  }
Return
F3::                 ; Возобновление по F3.
  If Stop
  {
    Stop := False
    Pause
  }
Return
F4::
Loop {
  Send {sc5}
  Sleep 70
  Send {sc6}
}
F5::                 ; Приостановка по F5.
  If not Stop
  {
    Stop := True
    Pause
  }
Return
F6::                 ; Возобновление по F6.
  If Stop
  {
    Stop := False
    Pause
  }
Return

2 (изменено: __Михаил__, 2022-12-13 01:40:42)

Re: AHK: Помогите найти ошибку.

Первый цикл 'Loop' нужно прерывать перед запуском нового, иначе он будет как в вашем случае в режиме ожидания продолжения, которое никогда не наступит из-за использования команды 'Pause'.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

3 (изменено: MilosA, 2022-12-13 22:46:02)

Re: AHK: Помогите найти ошибку.

В конец первого цикла с клавишей F1 вписать "Brake"?

Если я вписываю команду "Brake" в конец, то выходит, что цикл не повторяется, а прерывается после 1 круга.
И работает только при постоянно зажатой клавиши F1.

Необходимо чтобы с любого момента скрипта, я мог пользоваться как клавишей F1 так и F2

4

Re: AHK: Помогите найти ошибку.

В целом, если не разбираться в деталях, то проще будет создать ещё один скрипт и запускать каждый цикл по отдельности. Или вам нужно отключать первый при запуске второго?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

5

Re: AHK: Помогите найти ошибку.

__Михаил__

А два скрипта вместе можно запустить?

И решит ли это проблему?

Всё можно записать в одном скрипте, чтобы не придумывать костылей в виде двух запущенных скриптов)

6

Re: AHK: Помогите найти ошибку.

"Цикл" будет включаться\выключаться на одну клавишу, а также переключаться с одного на другой.


F1::
F2:: SetTimer, label, % (hotkey != A_ThisHotkey) ? (10, hotkey := A_ThisHotkey) : ("Off", hotkey := "")

label:
    if (hotkey = "F1") {
        Send {2}
        Sleep 70
        Send {3}
    }
    else if (hotkey = "F2") {
        Send {4}
        Sleep 70
        Send {5}
    }
Return

7 (изменено: MilosA, 2022-12-14 14:57:26)

Re: AHK: Помогите найти ошибку.

Огромное спасибо, у вас это красиво получилось!
Мне очень приятно, жму руку и благодарю рейтингом!

8

Re: AHK: Помогите найти ошибку.

MilosA, ознакомьтесь, пожалуйста, с Правилами, отредактируйте свои посты. Обратите внимание на точки в конце предложений и правила цитирования.

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