1

Тема: SetTimer and GOTO

Добрый день,
Помогите пожалуйста, необходимо при наступлении события перейти на строку.
Вот код для примера.

RRRR:

SetTimer, tm_warning, 1000
i = 0
Loop
{
	tooltip, %i%
	sleep, 1000
	i++
}

tm_warning:
{
	if ( i >= 3)
	{
		SetTimer, tm_warning, Delete
		GOTO, RRRR
		return
	}
return
}

Таймер срабатывает несколько раз нормальна, а потом перестает работать. В чем ошибка ?

2

Re: SetTimer and GOTO

Ошибка в GOTO, не используйте этот оператор.

3 (изменено: band-rk, 2018-08-27 18:33:07)

Re: SetTimer and GOTO

stealzy
Подскажите, что лучше использовать? gosub ? с ним тоже самое,

4 (изменено: band-rk, 2018-08-27 23:59:10)

Re: SetTimer and GOTO

stealzy
Логика следующая, Есть скрипт, который выполняет постоянно очень много действий, по кругу,
К примеру

Loop
{
;тут и работа с мышей, и Imageserch и т.д.
;около 200 строк
}

Но "параллельно" необходимо мониторить участок на экране, и в случае появление определенного цвета - выполнить определенные действия и по завершению этих действий начать скрипт с начала, то-есть перейти перед loop.
В данный момент я использую в таймере reload,  перезапускаю скрипт. Но данный метод мне не нравится, т.к. планирую добавить в скрипт GUI,

5 (изменено: stealzy, 2018-08-29 22:17:27)

Re: SetTimer and GOTO

Любой loop можно переписать как таймер, так будет удобнее, поскольку loop имеет ограничение в один одновременно исполняющийся цикл:

#Persistent
i := 0
SetTimer Loop_label, -1
SetTimer tm_warning, 1000
Return

Loop_label:
	ToolTip % ++i
	SetTimer Loop_label, -1000
Return

tm_warning:
	if ( i >= 5)
	{
		SetTimer Loop_label, Off
		SetTimer, tm_warning, Off
		; определенные действия
		i := 0
		SetTimer Loop_label, -1
		SetTimer, tm_warning, On
	}
Return

6 (изменено: band-rk, 2018-08-29 20:48:10)

Re: SetTimer and GOTO

stealzy
что то не работает (, А может возможно запустить скрипт с параметром ? и параметр передать в код ?
Честно скажу, и с параметрами и с двумя таймерами (первый из которых выступает loop-ом), какой то велосипед ))
Может еще варианты есть реализовать задачу, в любом случае, по примеру выше не работает (

7

Re: SetTimer and GOTO

stealzy
Да, все работает, но не совсем понятно что такое -1, -1000 в Таймере.

8 (изменено: stealzy, 2018-08-30 02:17:56)

Re: SetTimer and GOTO

Смотрите справку по SetTimer.

Если понимаете английский, оригинальная справка находится в меню пуск в папке AutoHotkey.
Если не знаете язык, используйте google translate (русская справка уже несколько устарела):
Гуглим autohotkey, на офф.сайте кликаем "Перевести".
Документация → Список команд → Команда (их много, быстрее найти с помощью Ctrl+F).

9 (изменено: band-rk, 2018-08-30 18:51:00)

Re: SetTimer and GOTO

stealzy пишет:

Смотрите справку по SetTimer.

Если понимаете английский, оригинальная справка находится в меню пуск в папке AutoHotkey.
Если не знаете язык, используйте google translate (русская справка уже несколько устарела):
Гуглим autohotkey, на офф.сайте кликаем "Перевести".
Документация → Список команд → Команда (их много, быстрее найти с помощью Ctrl+F).

Я немножко про другое, я понимаю, что 3й параметр может принимать "Period|On|Off|Delete". В данном случае это период. в справке написано, что период может быть отрицательный, тогда таймер выполняется один раз. Мне непонятно, почему в самом начале период -1, а в петле мы изменяем на -1000 (почему не на - 500 ?)