Есть несколько зарегестрированных Adlib-функций. Что будет если вызывается какая-нибудь из них.
В справке написано, что приостанавливается работа основного скрипта. А что будет с остальными Adlib-функциями? Они также будут проверять условия и в случае их истинности выполнять дальнейшее содиржимое и переключаться на выполнение других функций. Или же вызов одной Adlib-функции приотстанавливает запуск других.
На простеньком примере подразобрался малость Похоже, что Adlib-функции будут запускаться по очереди. Разное время Sleep(..) в теле каждой из функций наглядно подтверждает, что пока выполняется одна функция, то все остальные на это время блокируются.
В справке написано, что приостанавливается работа основного скрипта. А что будет с остальными Adlib-функциями? Они также будут проверять условия и в случае их истинности выполнять дальнейшее содиржимое и переключаться на выполнение других функций. Или же вызов одной Adlib-функции приотстанавливает запуск других.
Код:
AdlibRegister('_Func1', 250)
AdlibRegister('_Func2', 250)
AdlibRegister('_Func3', 250)
While 1
; основной цикл программы
WEnd
Func _Func1()
If $fBoolean_1 Then
; Выполлнение определённых действий по условию
EndIf
EndFunc
Func _Func2()
If _DateDiff('n', $sStartDate, _NowCalc())>IniRead('Settings.ini', 'Timers', 'Action_1', '2012/04/11 14:20:41') Then
; Выполлнение определённых действий по времени
EndIf
EndFunc
Func _Func3() ; обработка окна ошибки IE
If WinExists('[TITLE:Windows Internet Explorer; CLASS:#32770]') Then
WinActivate('[TITLE:Windows Internet Explorer; CLASS:#32770]')
Sleep(Random(2000, 3000, 1))
ControlClick('[TITLE:Windows Internet Explorer; CLASS:#32770]', '', '[CLASS:Button; INSTANCE:1]')
EndIf
If WinExists('[TITLE:Windows; CLASS:#32770]') Then
WinActivate('[TITLE:Windows; CLASS:#32770]')
Sleep(Random(2000, 3000, 1))
ControlClick('[TITLE:Windows; CLASS:#32770]', '', '[CLASS:Button; INSTANCE:1]')
EndIf
EndFunc
На простеньком примере подразобрался малость Похоже, что Adlib-функции будут запускаться по очереди. Разное время Sleep(..) в теле каждой из функций наглядно подтверждает, что пока выполняется одна функция, то все остальные на это время блокируются.
Код:
Global $f1=False, $f2=False
Opt("TrayIconDebug", 1)
AdlibRegister('_Func1', 250)
AdlibRegister('_Func2', 250)
AdlibRegister('_Func3', 250)
HotKeySet('{1}', '_F1_true')
HotKeySet('{2}', '_F1_false')
HotKeySet('{3}', '_F2_true')
HotKeySet('{4}', '_F2_false')
HotKeySet('{esc}', '_Finish')
While 1
Sleep(50)
ToolTip('')
WEnd
Func _Func1()
If $f1=True Then
ToolTip('Func_1' & @CRLF & 'f1=' & $f1 & @CRLF & 'f2=' & $f2 , 0, 50)
Sleep(2000)
ToolTip('')
EndIf
EndFunc
Func _Func2()
If $f2=True Then
ToolTip('Func_2' & @CRLF & 'f1=' & $f1 & @CRLF & 'f2=' & $f2 , 0, 50)
Sleep(1000)
ToolTip('')
EndIf
EndFunc
Func _Func3()
If $f1=False And $f2=False Then
ToolTip('Func_3' & @CRLF & 'f1=False' & @CRLF & 'f2=False' , 0, 50)
Sleep(500)
ToolTip('')
EndIf
EndFunc
Func _F1_true()
$f1=True
EndFunc
Func _F1_false()
$f1=False
EndFunc
Func _F2_true()
$f2=True
EndFunc
Func _F2_false()
$f2=False
EndFunc
Func _Finish()
Exit
EndFunc