1

Тема: AHK: Прерывание цикла при появлении окна

Подскажите, пожалуйста, как прервать цикл в данном случае? Спасибо!

Rename:
	Send f2
	WinWait, Rename, , 1
	if ErrorLevel
	{
		MsgBox в течение секунды окно не появилось
		return
	}
	else
		Send Name123
return

Batch:
Loop
{
SendInput ^{Down}
gosub Rename
Sleep 1000
; прервать цикл, если появилось окно "в течение секунды окно не появилось"
}
return

2 (изменено: stealzy, 2016-11-20 22:30:54)

Re: AHK: Прерывание цикла при появлении окна

Цикл прерывается командой Break.
Инфо об окне можно записать в переменную. Хотя я бы оформил Rename как функцию, возвращающую инфо об окне, тогда даже переменная не нужна.

3

Re: AHK: Прерывание цикла при появлении окна

stealzy, сделал через переменную, а через функцию не смогу самостоятельно реализовать. Буду признателен, если продемонстрируете такой вариант.

4

Re: AHK: Прерывание цикла при появлении окна

Привет.
Цикл, ожидающий появление окна:


winName:="Тайтл окна"
while !(WinExist(winName))
	Sleep, 250
MsgBox, % "Появилось окно " winName

Условие для прерывания цикла из примера в первом посте:


winName:="Тайтл окна"
Rename:
	Send f2
	WinWait, Rename, , 1
	if ErrorLevel
	{
		MsgBox в течение секунды окно не появилось
		return
	}
	else
		Send Name123
return

Batch:
Loop
{
SendInput ^{Down}
gosub Rename
Sleep 1000
; прервать цикл, если появилось окно "в течение секунды окно не появилось"
	if (WinExist(winName))
		break
}
return