1 (изменено: Vartizor, 2023-01-19 12:47:25)

Тема: AHK: Почему не работает

Здравствуйте! Нашёл такой скрипт.


XButton2::
    If isKeyPressed := !isKeyPressed    ; Позволяет чередовать действия при нажатии пробела . При каждой проверке этого условия в переменную isKeyPressed записывается значение обратное её текущему значению.
        SetTimer, SendA, 40             ; Таймер позволяет отправлять нажатия каждые 40мс и не мешает скрипту в паузах «параллельно» выполнять прочие подпрограммы.
    Else
    {
        SetTimer, SendA, Off            ; Если это второе нажатие пробела — выключаем таймер
        Send {vk57 Up}                  ; Чтоб не возникло «залипание» отправляем отпускание клавиши.
    }
    KeyWait Space                       ; ждём физического отпускания пробела чтоб не перезапускать таймер при каждом нажатии пробела во время автоповтора нажатий пробела.
    return

SendA:
    Send {vk57 Down}
    return

F11::                 ; Приостановка скрипта по F11. По сути эти строчки (приостановка, возобновление) впринципе не нужны, их можно убрать.
  If not Stop
  {
Sendinput,{vk57 up}
Sleep, 20
    Stop := True
    Pause
  }
Return

F12::                 ; Возобновление скрипта по F12.
  If Stop
  {
    Stop := False
    Pause
  }
Return

Всё работает.

Я переделал его под свои клавиши.


XButton1::
    If isKeyPressed := !isKeyPressed    ; Позволяет чередовать действия при нажатии пробела . При каждой проверке этого условия в переменную isKeyPressed записывается значение обратное её текущему значению.
        SetTimer, SendA, 40             ; Таймер позволяет отправлять нажатия каждые 40мс и не мешает скрипту в паузах «параллельно» выполнять прочие подпрограммы.
    Else
    {
        SetTimer, SendA, Off            ; Если это второе нажатие пробела — выключаем таймер
        send {vk10 up}		; Чтоб не возникло «залипание» отправляем отпускание клавиши.
        send {vk02 up}
    }
    KeyWait Space                       ; ждём физического отпускания пробела чтоб не перезапускать таймер при каждом нажатии пробела во время автоповтора нажатий пробела.
    return

SendA:
    send {vk10 Down}
    send {vk02 Down}
    return

F11::                 ; Приостановка скрипта по F11. По сути эти строчки (приостановка, возобновление) впринципе не нужны, их можно убрать.
  If not Stop
  {
send {vk10 up}
send {vk02 up}
Sleep, 20
    Stop := True
    Pause
  }
Return

F12::                 ; Возобновление скрипта по F12.
  If Stop
  {
    Stop := False
    Pause
  }
Return

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

2

Re: AHK: Почему не работает

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

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

3

Re: AHK: Почему не работает

Vartizor
Если копировать и необдуманно использовать, можно много чего нерабочего понаделать. Пересмотрите переменные и логически обдумайте для чего используются они в скрипте. Ошибка будет найдена за пару минут.

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

4

Re: AHK: Почему не работает

В том то и дело что не знаю я для чего и какие переменные использовать.
Пробовал по-разному, но что-то не получается отключить скрипт он если начал работать то всё его не остановить.
Поэтому и прошу помочь мне настроить!
Нужно чтоб по нажатию XButton1:: зажимался shift  и правая кнопка мыши и по нажатию XButton1:: ставал на паузу.

5

Re: AHK: Почему не работает


*XButton1::
	SetTimer, label, % (toggle := !toggle) ? 10 : "Off"
	if !toggle
		Send {Shift up}{RButton up}
Return

label:
	Send {Shift down}{RButton down}
Return