|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как прекратить выполнение функции не ожидая пока она завершится. |
|
[решено] Как прекратить выполнение функции не ожидая пока она завершится.
|
Пользователь Сообщения: 143 |
Профиль | Отправить PM | Цитировать Что у меня имеется:
;#include "GUIFinder.au3" #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Timers.au3> Opt("GUIOnEventMode", 1) Global $iStop = false, $ch_name = true $hGUI = GUICreate("",250,165,300,300, $WS_SYSMENU,BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)) GUICtrlCreateGroup("Win.info", 2, 2, 240, 65) ;$hFinder = GUICtrlCreateFinder(10, 20) $hParInp_label = GUICtrlCreateLabel("Win.Handle:", 60, 20, 100, 20) $hHwndInp_label = GUICtrlCreateLabel("Contro.Handle:", 60, 40, 100, 20) $hHwndInp = GUICtrlCreateInput("", 132, 20, 100, 18) ;$hClassInp = GUICtrlCreateInput("", 40, 62, 100, 20) $hParInp = GUICtrlCreateInput("", 132, 40, 100, 18) ;$hTitleInp = GUICtrlCreateInput("", 40, 106, 100, 20) GUICtrlCreateGroup("Изменение параметра:", 2, 70, 188, 70) $move_from_label = GUICtrlCreateLabel("От: ", 10, 90, 15, 20) $move_to_label = GUICtrlCreateLabel("До: ", 65, 90, 18, 20) $move_step_label = GUICtrlCreateLabel("Шаг: ", 122, 90, 22, 20) $move_sleep_label = GUICtrlCreateLabel("Задержка: ", 10, 115, 60, 20) $move_sleep_label_sec = GUICtrlCreateLabel("сек.", 105, 115, 20, 20) $move_from_Input = GUICtrlCreateInput("1", 27, 88, 30, 18) $move_to_Input = GUICtrlCreateInput("10", 85, 88, 30, 18) $move_step_Input = GUICtrlCreateInput("1", 147, 88, 30, 18) $move_sleep_Input = GUICtrlCreateInput("1", 70, 113, 30, 18) $butt_start = GUICtrlCreateButton("СТАРТ", 190, 75, 50, 40) GUICtrlSetOnEvent($butt_start, "_Main_Events") GUISetOnEvent($GUI_EVENT_CLOSE, "_Main_Events") GUISetState() While 1 Sleep(10) ;If $FINDER_OPEN And (String($FINDER_HWND) <> GUICtrlRead($hHwndInp)) Then ; GUICtrlSetData($hHwndInp, $FINDER_HWND) ; GUICtrlSetData($hParInp, $FINDER_PARENT) ;EndIf WEnd Func _Main_Events() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $butt_start If $ch_name Then GUICtrlSetData($butt_start,"СТОП") _calc() ;надо запустить $ch_name = False Else GUICtrlSetData($butt_start,"СТАРТ") $ch_name = True EndIf EndSwitch EndFunc Func _calc() ConsoleWrite("Старт"&@LF) Local $from = GUICtrlRead($move_from_Input) Local $to = GUICtrlRead($move_to_Input) Local $step = GUICtrlRead($move_step_Input) Local $wait = GUICtrlRead($move_sleep_Input) Local $plus = false ;Local $res = $from Local $starttime = _Timer_Init() while 1 If _Timer_Diff($starttime)/1000 >= $wait Then If Not $plus then $res = $from $plus = True Else $res = $res + $step if $res >= $to then $res = $to ConsoleWrite("Время: " & _Timer_Diff($starttime)/1000&@LF) ConsoleWrite("стоп " & $res &" = "& $to&@LF) ;_Timer_KillTimer($hGUI, ExitLoop EndIf EndIf ConsoleWrite("Время: " & _Timer_Diff($starttime)/1000&@LF) ConsoleWrite("Результат: " & $res&@LF) $starttime = _Timer_Init() EndIf WEnd EndFunc Видел тут вот похожую тему, но как к себе ее прикруть не понимаю. |
|
Отправлено: 20:05, 07-05-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Несколько вариантов:
1) Отключение режима событии... ... Opt("GUIOnEventMode", 1) Global $iStop = False, $ch_name = False .... Func _Main_Events() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $butt_start $ch_name = Not $ch_name If $ch_name Then GUICtrlSetData($butt_start,"СТОП") _calc() ;надо запустить Else GUICtrlSetData($butt_start,"СТАРТ") EndIf EndSwitch EndFunc Func _calc() ConsoleWrite("Старт"&@LF) ... Opt("GUIOnEventMode", 0) While 1 Switch GUIGetMsg() Case $butt_start $ch_name = False GUICtrlSetData($butt_start, "СТАРТ") ExitLoop Case $GUI_EVENT_CLOSE Exit EndSwitch ... WEnd Opt("GUIOnEventMode", 1) EndFunc ... Global $ch_name = False ... While 1 Sleep(10) If $ch_name Then _calc() ;надо запустить EndIf WEnd Func _Main_Events() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $butt_start $ch_name = Not $ch_name If $ch_name Then GUICtrlSetData($butt_start, "СТОП") ElseIf GUICtrlRead($butt_start) <> "СТАРТ" Then GUICtrlSetData($butt_start, "СТАРТ") EndIf EndSwitch EndFunc ... |
------- Отправлено: 20:56, 07-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как свернуть выполнение bat(cmd) файла? | Centrinar | AutoIt | 5 | 29-09-2011 15:16 | |
[решено] Как приостановить выполнения скрипта пока не будет нажата кнопка | malev | AutoIt | 2 | 14-11-2009 20:05 | |
Соринка в объективе, как она могла появиться и как избавиться от неё? | Цицерон | Цифровое изображение | 7 | 11-04-2009 20:39 | |
Как остановить скрипт, пока юзер не закроет всплывающее окно? | Gamover jr | Вебмастеру | 5 | 16-04-2008 20:08 | |
Конфигурация компа, как она Вам? | kaEwituS | Выбор отдельных компонентов компьютера и конфигурации в целом | 20 | 19-06-2007 18:03 |
|