1

Тема: AHK: Последовательное нажатие клавиш в зависимости от условия

Здравствуйте, есть такой скрипт (при каждом нажатии клавиши 2, скрипт возвращается на исходную):

$2::
PixelGetColor, color, 645, 510 
if color = 16777215
	{
	Send, {1 Down} 
	KeyWait, 2
	Send, {1 Up}
	}
else
	{
	PixelGetColor, color, 653, 510 
	if color = 16777215
		{
		Send, {2 Down} 
		KeyWait, 2
		Send, {2 Up}
		}
	else
		{
		PixelGetColor, color, 664, 510 
		if color = 16777215
			{
			Send, {3 Down} 
			KeyWait, 2
			Send, {3 Up}
			}
		}
	}
return

Нужно чтобы он этого не делал, а продолжал свое движение, последовательно выполняя условия. Т.е. я спамлю клавишу 2 - скрипт дожидается пока будет выполнено первое условие, переходит ко 2-ой части, дожидается выполнения второго условия и т.д. до return.

2

Re: AHK: Последовательное нажатие клавиш в зависимости от условия

Чтобы цикл выполнялся до выполнения определённых условий, существует команда While (loop).

3

Re: AHK: Последовательное нажатие клавиш в зависимости от условия

ypppu Если зациклить через loop, скрипт будет автоматически работать, пока не отжать клавишу? Если так - мне этого не нужно. А если - не так, можно пример, если не затруднит?

4

Re: AHK: Последовательное нажатие клавиш в зависимости от условия

Держи пример:


var:=0
	loop 
	{ 
		if (isDialogOpen() = 1  && getdialogid() = 50 && var == 0) 
		{
			Sleep, 200
			Send, {Enter}
			Sleep, 200
			var:=1
		}
		if (isDialogOpen() = 1  && getdialogid() = 2000 && var == 1)
		{
			Sleep, 200
			Send, {Down}
			Send, {Enter}
			Sleep, 200
			var:=2
		}
		if (isDialogOpen() = 1  && getdialogid() = 2501 && var == 2)
		{
			Sleep, 200
			Send, {Down 2}  
			Send, {Enter}
			Sleep, 400
			Send, {Esc}
			Sleep, 200
			var:=3
		}
		if (isDialogOpen() = 1  && getdialogid() = 2000 && var == 3)
		{
			Sleep, 200
			Send, {Esc}
			Sleep, 200
			var:=4
		}
		if (isDialogOpen() = 1  && getdialogid() = 50 && var == 4)
		{
			Sleep, 200
			Send, {Esc}
			var:=0
			Exit
		}
	}
	return

Дальше сам.

5

Re: AHK: Последовательное нажатие клавиш в зависимости от условия

slavafedora Благодарю, попробую разобраться.

6

Re: AHK: Последовательное нажатие клавиш в зависимости от условия

"Скрипт дожидается пока будет выполнено первое условие, переходит ко 2-ой части, дожидается выполнения второго условия и т.д." - это командой While (loop). А чтобы ГК $2:: не прерывала текущий поток - команда Hotkey.
В документации всё доходчиво расписано и с примерами. Осталось прочесть.