Loopback
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: только не могу разобраться куда всунуть ProcessWaitClose ($PID) | Раз во время выполнения скрипта нужно еще что-то делать, ProcessWaitClose не подойдет, точно так же как не годится и Sleep - обе функции блокируют выполнение скрипта. Нужно использовать функцию ProcessExists($PID) в цикле, и делать выход если ее результат False. Если я правильно понял задачу, как-то примерно так: Код: Opt("WinTitleMatchMode", 4) HotKeySet("{PGDN}", "Access_Off") ;~ отключение ограничения HotKeySet("{PGUP}", "Access_On") ;~ вернуть запрет на круги своя #include <Date.au3> Global $nTimer $Msg = "пытался менять глобальные настройки" $probel = " " $user = @UserName $Access = 'On' $PID = Run("C:\proga.EXE") Sleep (10000) While ProcessExists($PID) If $Access = 'Off' Then ;~ если юзер нажал пейдждаун, у него 2 минуты на изменение настроек ; при этом продолжается отслеживание закрытия процесса If TimerDiff($nTimer) < 120000 Then ContinueLoop ; а тут пишем код, который выполнится, если юзер не успел EndIf If $Access = 'On' Then WinWaitActive ("Options") ;~ ждемс send("{ESC}") ;~ захлопываем окошко настроек FileWriteLine("C:\options_control.log",_NowCalcDate()& $probel &_NowTime()& $probel & $user & " " & $Msg ) ;~ пишем о нарушителе в логи MsgBox(016, "Предупреждение", "Вы не имеете права менять глобальные настройки программы!"& CHR(10)&"") ;~ предупреждаем юзера что нельзя такого делать EndIf WEnd ; выключаем при завершении цикла Shutdown(0) Func Access_On() $Access = 'On' EndFunc Func Access_Off() $Access = 'Off' $nTimer = TimerInit() EndFunc | | Всего записей: 174 | Зарегистр. 08-03-2002 | Отправлено: 20:34 07-04-2009 | Исправлено: Loopback, 20:39 07-04-2009 |
|