1 (изменено: ypppu, 2020-08-03 10:03:55)

Тема: AHK: Остановить выполнение скрипта

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



!1::																				
{
SendMessage, 0x50,, 0x4190419,, A ; русский
SendInput, %text1%{tab}{tab}
SendInput, %text2%
sleep 800
send {down}{tab}
sleep 400
SendInput, %text2%
sleep 600
send {down}{tab}
sleep 400
Send,%text2%
sleep 600
send {down}{tab}
sleep 400
send {tab}{tab}{tab}{tab}
sleep 400
SendInput %text2%
sleep 600
send {down}{tab}
sleep 400
return
}

2

Re: AHK: Остановить выполнение скрипта

Командой Pause.

3

Re: AHK: Остановить выполнение скрипта

При использовании паузы останавливается весь скрипт,  а нужно что бы остановилось\сбросилось выполнение этих команд.  Т.к. скрипт большой, и при отключение паузы,  он работает не правильно.

4 (изменено: fgslm, 2020-08-03 08:14:25)

Re: AHK: Остановить выполнение скрипта

Вот беда. Тоже столкнулся с такой проблемой. Но думаю её можно решить проверкой параметров вначале скрипта и дальнейшим выполнением/или невыполнением


!1::																				
{
if (какой-то параметр and какой-то еще параметр){
;Тогда уже ваши действия
SendMessage, 0x50,, 0x4190419,, A ; русский
SendInput, %text1%{tab}{tab}
SendInput, %text2%
sleep 800
send {down}{tab}
sleep 400
SendInput, %text2%
sleep 600
send {down}{tab}
sleep 400
Send,%text2%
sleep 600
send {down}{tab}
sleep 400
send {tab}{tab}{tab}{tab}
sleep 400
SendInput %text2%
sleep 600
send {down}{tab}
sleep 400
}
return
}

Но если вы хотите сбросить их прямо посередине - то там нужно вставлять промежутки с условиями(напрмиер такими, как написано у меня вверху). Т.е. поделить выполнение на небольшие блоки.

5

Re: AHK: Остановить выполнение скрипта

Интересное решение, можно ли сделать проверку по нажатию комбинации клавиши? Желательно такой же, коротая запускает скрипт.

6 (изменено: fgslm, 2020-08-03 19:10:30)

Re: AHK: Остановить выполнение скрипта

ustarta пишет:

по нажатию комбинации клавиши

if (GetKeyState( "Alt", "P" ) and GetKeyState("Клавиша", "P")) {
}

Хотя, я подумал что для такого решения их придётся держать зажатыми всё выполнение скрипта.
Если нужно сделать "тормоз", то лучше сделать проверку с обратным действием, т.е. прерыванием:

if (GetKeyState( "Alt", "P" ) and GetKeyState("Клавиша", "P")) {
break
}
;А тут уже ваш код

Но возможно комбинация запустит скрипт заново, т.что придётся использововать другое сочетание.

7

Re: AHK: Остановить выполнение скрипта

fgslm

if (GetKeyState( "F1", "P" ))
{
break
}
!1::
{																		
SendMessage, 0x50,, 0x4190419,, A ; русский
SendInput, раз{tab}{tab}
SendInput, два
sleep 800
send {down}{tab}
sleep 400
SendInput, три
sleep 600
send {down}{tab}
sleep 400
Send,четыре 
sleep 600
send {down}{tab}
sleep 400
send {tab}{tab}{tab}{tab}
sleep 400
SendInput, пять
sleep 600
send {down}{tab}
sleep 400
return
}

При запуске ошибка. Не пойму что не так.
Пока комбинацию клавиши убрал ,что бы разобратся с запуском функции

8 (изменено: Vitalkerrain, 2020-08-03 19:55:59)

Re: AHK: Остановить выполнение скрипта

Проще всего перезагрузить

F2::
Reload
return

9 (изменено: fgslm, 2020-08-03 19:58:41)

Re: AHK: Остановить выполнение скрипта


a := 1
check := 0
start:
loop 
{

  tooltip %a%
  a++
  sleep 500

  if check > 0
  break ;куда он ведёт?
}

F1::        ; тут мы прерываем цикл
check := 1
return

F2::        ; тут мы возвращаемся к нему
check := 0
goto start

Вот мне какой-то колхозный пример приводили. Возможно он вам поможет.

ustarta пишет:

if (GetKeyState( "F1", "P" )) { break }

Нужно поместить после начала скрипта, а не перед ним

10

Re: AHK: Остановить выполнение скрипта

Vitalkerrain

Спасибо,  работает.

11

Re: AHK: Остановить выполнение скрипта

fgslm


if (GetKeyState( "F1", "P" )) { break }

Все равно в ошибку, видимо реально надо использовать ваш пример выше, релоад проще решил проблему.

12 (изменено: fgslm, 2020-08-03 20:10:01)

Re: AHK: Остановить выполнение скрипта

ustarta пишет:

fgslm


if (GetKeyState( "F1", "P" )) { break }

Все равно в ошибку, видимо реально надо использовать ваш пример выше, релоад проще решил проблему.

А, ну да, возможно прерывать то нечего, потому что цикла нет. Тогда вместо break использовать continue или exit, или тот же reload + return

13

Re: AHK: Остановить выполнение скрипта

break - Прерывает цикл, а где вы его создали?
Естественно будет ошибка при запуске.

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

14

Re: AHK: Остановить выполнение скрипта

http://forum.script-coding.com/viewtopi … 12#p130712

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Остановить выполнение скрипта

А возможно ли сделать что бы нажатие клавиши для прерывания можно было использовать, только тогда когда функция уже запустилась?
Попробовал релоад через IF сделать, не срабатывает.

Так бы решилась проблема останавливать и запускать с 1 клавиши

16

Re: AHK: Остановить выполнение скрипта

ustarta пишет:

А возможно ли сделать что бы нажатие клавиши для прерывания можно было использовать, только тогда когда функция уже запустилась?

Если вы мне, то там так и есть. Далее ничего не понял.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17 (изменено: Vitalkerrain, 2020-08-04 14:15:23)

Re: AHK: Остановить выполнение скрипта

ustarta

!1::																				
{
Job := 1		
SendMessage, 0x50,, 0x4190419,, A ; русский
SendInput, %text1%{tab}{tab}
SendInput, %text2%
sleep 800
send {down}{tab}
sleep 400
SendInput, %text2%
sleep 600
send {down}{tab}
sleep 400
Send,%text2%
sleep 600
send {down}{tab}
sleep 400
send {tab}{tab}{tab}{tab}
sleep 400
SendInput %text2%
sleep 600
send {down}{tab}
sleep 400
Job := 0
return
}

!2::
If (Job = 1) {
Reload
} else {
Job := 0
}
return

18 (изменено: fgslm, 2020-08-05 00:28:37)

Re: AHK: Остановить выполнение скрипта

ustarta пишет:

нажатие клавиши для прерывания можно было использовать, только тогда когда функция уже запустилась?

fgslm пишет:

поделить выполнение на небольшие блоки.

fgslm пишет:

проверять клавиши в каждом из них

fgslm пишет:

Создать цикл

19

Re: AHK: Остановить выполнение скрипта

Спасибо большое за помощь, при тестировании


F2::
Reload
return

данный вариант решил все проблемы которые возникли.