1 (изменено: Naiglos, 2012-08-04 03:48:38)

Тема: AHK: Прерывание таймера другим таймером.

Есть скрипт в котором два таймера, проблема заключается в том, что таймер SecondCheck постоянно не даёт работать таймеру MainCheck.
Вопрос: как решить эту проблему?


#Persistent
Gosub, MainCheck
SetTimer, MainCheck, 15000,1
MainCheck:
If % DeviceSearch() contains True
{
	SetTimer, SecondCheck, 10000,2	
	Return
}
Return
SecondCheck:
If % DeviceSearch() contains True
{
	
	MsgBox Remove Key.
}
Return
DeviceSearch()
{
	Path:= A_WorkingDir "\temp.txt"
	RunWait, %comspec% /c Devcon find *usb\vid_1131* >>%path%, , Hide
	Result = False
	Loop, Read, %Path%
	{
		If A_LoopReadLine Contains VID_1131
		{
			Result = True
		}
	}
	FileSetAttrib -RH, %Path%
	FileDelete, %Path%
	Return  %Result%
}

2

Re: AHK: Прерывание таймера другим таймером.

Это не проблема, а особенность команды SetTimer.
[quote=Проект перевода документации AutoHotkey
Имена переводчиков Дед Мазай, Gourmet
]Хотя таймеры могут создать впечатление того, что скрипт выполняет несколько задач одновременно, это не так. Напротив, спланированная по времени подпрограмма ведет себя точно так же, как и любой другой поток: она может прервать какой-либо поток или быть прерванной другим потоком, например таким, как подпрограмма горячей клавиши.