Доброго времени суток!
Пишу скрипт для автоматизации длительного процесса. Есть стартовая экранная форма с Label'ами, Input'ами и кнопками "Ок" и "Продолжить". На кнопку "Ок" повесил функцию, при которой считываются введённые с экрана данные и запускается сам процесс. Если на каком-то этапе падает ошибка, то скрипт возвращает на стартовую форму для корректировки введённых данных. После редактирования планируется нажимать кнопку "Продолжить", которая возвратит к этапу, на котором эта ошибка и выпадала.
Проблемы:
1. После того, как процесс запускается по нажатию кнопки "Ок" и возникновении ошибки, обе кнопки на стартовой экранной форме не работают. Пробовал проверить с помощью отладочного вывода в консоль / MsgBox - пытался понять на каком шаге валится, но безрезультатно. В обработчик клавиши "Продолжить" скрипт даже не заходит.
2. При подобной ошибке стартовая форма не закрывается при нажатии на крест в правом верхнем углу экрана. Проблему решает только диспетчер задач через завершение процесса.
Вопросы:
1. Как активировать кнопку "Продолжить"?
2. Как корректно завершать этот процесс / как сделать так, чтобы эта форма не зависала?
Приложу часть кода:
Очень нужна помощь.
Пишу скрипт для автоматизации длительного процесса. Есть стартовая экранная форма с Label'ами, Input'ами и кнопками "Ок" и "Продолжить". На кнопку "Ок" повесил функцию, при которой считываются введённые с экрана данные и запускается сам процесс. Если на каком-то этапе падает ошибка, то скрипт возвращает на стартовую форму для корректировки введённых данных. После редактирования планируется нажимать кнопку "Продолжить", которая возвратит к этапу, на котором эта ошибка и выпадала.
Проблемы:
1. После того, как процесс запускается по нажатию кнопки "Ок" и возникновении ошибки, обе кнопки на стартовой экранной форме не работают. Пробовал проверить с помощью отладочного вывода в консоль / MsgBox - пытался понять на каком шаге валится, но безрезультатно. В обработчик клавиши "Продолжить" скрипт даже не заходит.
2. При подобной ошибке стартовая форма не закрывается при нажатии на крест в правом верхнем углу экрана. Проблему решает только диспетчер задач через завершение процесса.
Вопросы:
1. Как активировать кнопку "Продолжить"?
2. Как корректно завершать этот процесс / как сделать так, чтобы эта форма не зависала?
Приложу часть кода:
Код:
Opt("GUIOnEventMode", 1);
$hMain = GUICreate("Главное окно", 600, 600)
...
$btOk = GUICtrlCreateButton("ОК", 230, 500, 60, 20)
$btCont = GUICtrlCreateButton("Продолжить", 300, 500, 80, 20)
...
GUICtrlSetOnEvent($btOk, "OkBtAction")
GUICtrlSetOnEvent($btCont, "ContBtAction")
GUISetOnEvent($GUI_EVENT_CLOSE, "CloseBtAction")
...
Func ContBtAction()
IF $curTitle == $secondTitle THEN
$f = GUICtrlRead($firstName);
$m = GUICtrlRead($middleName);
$l = GUICtrlRead($lastName);
$a = GUICtrlRead($age);
WinActivate($curTitle)
EndIf
EndFunc
Func OkBtAction()
$f = GUICtrlRead($firstName);
$m = GUICtrlRead($middleName);
$l = GUICtrlRead($lastName);
$a = GUICtrlRead($age);
start()
; Шаг 1: пропускаем
nextStep($firstTitle, $btNext)
; Шаг 2
secondStep()
; Шаг 3: пропускаем
nextStep($thirdTitle, $btNext)
; Шаг 4:
fourthStep()
; Шаг 5: пропускаем
nextStep($fifthTitle, $btNext)
; Шаг 6
sixthStep()
Exit;
EndFunc
; одна из функций, в которых может упасть ошибка на панельке "Уведомление"
Func secondStep()
WinWaitActive($secondTitle)
$curTitle = $secondTitle
...
WinWaitActive("Уведомление")
$res = ControlGetText("Уведомление", "", 2);
if $res == $error Then
ControlClick("Уведомление", "OK", 2)
MsgBox(4096, "Ошибка!", "Введены некорректные данные")
WinActivate($hMain)
WinWaitActive($secondTitle)
secondStep()
Else
ControlClick("Уведомление", "Да", 3) ; подтверждаем корректность
ControlClick($secondTitle, "Далее", 26) ; идем на следующий шаг
EndIf
EndFunc
Func CloseBtAction()
Exit
EndFunc
Очень нужна помощь.