Что нового

(Функция) _Wait - аналог Sleep

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
[info]Функция:
Код:
Func _wait ($time,$type='')
   If $type = '' Then
      $time = $time
   ElseIf $type = 's' Then
      $time = $time*1000
   ElseIf $type = 'm' Then
      $time = $time*60000
   ElseIf $type = 'h' Then
      $time = $time*3600000
   ElseIf $type = 'd' Then
      $time = $time*86400000
   EndIf
   $begin = TimerInit()
   $dif = TimerDiff($begin)
   While $dif < $time
      $dif = TimerDiff($begin)
      Sleep (5)
    WEnd
    Return 1
EndFunc
[/info]Знаю, что ничего нового и особенного я тут не продемонстрирую и Америку ни для кого не открою, но новичкам может быть полезно :smile:

Функция, аналогичная функции Sleep, но не подвешивающая при исполнении GUI и не мешающая работать Adlib'ам и остальным функциям (в режиме OnEvent).

[box title=_Wait]Задать время ожидания перед выполнением следующей строки скрипта.
_Wait ($time[,$type])
Параметры функции:
$timeПродолжительность
$typeОпционально. Тип времени ожидания:
""(по умолчанию) - миллисекунды
"s" - секунды
"m" - минуты
"h" - часы
"d" - дни (24 часа)
Возвращаемые значения:
После завершения возвращает 1.[/box]

Код:
AdlibRegister ('_Adlib',100)
$a = 0
_wait (10,'s')
MsgBox (0,'Всё','Время истекло.')

Func _wait ($time,$type='')
	If $type = '' Then
		$time = $time
	ElseIf $type = 's' Then
		$time = $time*1000
	ElseIf $type = 'm' Then
		$time = $time*60000
	ElseIf $type = 'h' Then
		$time = $time*3600000
	ElseIf $type = 'd' Then
		$time = $time*86400000
	EndIf
	$begin = TimerInit()
	$dif = TimerDiff($begin)
	While $dif < $time
		$dif = TimerDiff($begin)
		Sleep (5)
	WEnd
	Return 1
EndFunc

Func _Adlib ()
	If	   $a = 0 Then
		$text = '<||><||><||><||><||>'
	ElseIf $a = 1 Then
		$text = '<||  ||><||><||><||>'
	ElseIf $a = 2 Then
		$text = '<||  ||  ||><||><||>'
	ElseIf $a = 3 Then
		$text = '<||  ||  ||  ||><||>'
	ElseIf $a = 4 Then
		$text = '<||><||  ||  ||  ||>'
	ElseIf $a = 5 Then
		$text = '<||><||><||  ||  ||>'
	ElseIf $a = 6 Then
		$text = '<||><||><||><||  ||>'
	ElseIf $a = 7 Then
		$text = '<||><||><||><||><||>'
		$a = -1
	EndIf
	$a += 1
	TrayTip("_Adlib работает",$text,30,1)
	ToolTip($text,Default,Default,"_Adlib работает",1)
EndFunc
 

SyDr

Сидра
Сообщения
651
Репутация
158
У меня функции обработки GUI (OnEvent) и Adlib-функции прекрасно работаю со Sleep()
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
HukpoFuJl, если в твоем примере заменить _Wait() на Sleep(), то все будет так же хорошо работать.
 
Автор
HukpoFuJl

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
Вот блин :shok: проверил - точно работает... Странно, но в каких-то ситуациях точно помню мне приходилось заменять... Возможно это было при старых версиях AutoIt'a :wacko:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
HukpoFuJl сказал(а):
Странно, но в каких-то ситуациях точно помню мне приходилось заменять... Возможно это было при старых версиях AutoIt'a.

Да, я тоже помню, что когда-то мне приходилось что-то подобное писать.
 
Верх