-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Вопрос по TrayItemSetOnEvent: как выйти из скрипта в данной ситуации?
Добрый день! Для иллюстрации проблемы я сделал маленький скрипт:
читать дальше »
Код:
$ExitLoop=1
Opt("TrayMenuMode",1)
Opt("TrayOnEventMode",1)
HotKeySet("{esc}","ExitFunc")
$CurrentTime=TrayCreateItem("StartLoop")
TrayItemSetOnEvent ( -1, "StartLoop" )
$Exit=TrayCreateItem("Exit")
TrayItemSetOnEvent ( -1, "ExitFunc" )
while 1
sleep(100)
wend
Func StartLoop()
m("StartLoop() starts")
if $ExitLoop=1 then
$ExitLoop=0
else
$ExitLoop=1
endif
while not $ExitLoop
sleep(100)
wend
EndFunc
Func ExitFunc()
m("ExitFunc() starts")
Exit
EndFunc
Проблема вот в чем: когда щелкаешь на опцию трея "StartLoop", программа перестает реагировать на все остальные команды юзера через меню трея (потому что StartLoop зацикливает там все). А вот HotKeySet работает прекрасно вне зависимости от того, была ли нажата кнопка "StartLoop". Вопрос: как заставить прогу реагировать на команды через меню трея после вызова функции "StartLoop"?
|
Цитата:
Цитата evg64
программа перестает реагировать на все остальные команды юзера через меню трея »
|
Потому что обработка событии продолжается только после завершения вызванной событием функции - в этом случае лучше всего обрабатывать события в главном цикле:
|
Время: 21:51.
© OSzone.net 2001-