Must AutoIt
Сообщения: 3054
Благодарности: 1009
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Иск,
Во-первых это очень и очень не практично в цикле вот так записывать интенсивно в ини-файл, если очеь нужно, то делать это хотябы раз в несколько (десятков) секунд.
По поводу прерывания цикла. Это можно сделать простой проверкой переменной, присваивать ей значение при запуске фуннкции:
Код: 
#include <GUIConstants.au3>
#include <Misc.au3>
#include <Fade.au3>
Global $iLoopIsPaused = False
Opt("GUIOnEventMode", 1)
GUICreate("Test", 250, 200, 1024, 0)
GUISetBkColor(0xFFFFFF)
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
GUISetState(@SW_SHOW)
$tab = GUICtrlCreateTab(10, 10, 230, 180)
$tab2 = GUICtrlCreateTabItem("3")
GUICtrlCreateLabel("3", 30, 53, 130, 20)
$tab2combo = GUICtrlCreateCombo("", 170, 50, 60, 40)
GUICtrlSetData(-1, "40|30|20", "30") ; default 80%
$tab1 = GUICtrlCreateTabItem("2")
GUICtrlCreateLabel("2", 30, 53, 130, 20)
$tab1combo = GUICtrlCreateCombo("", 170, 50, 60, 40)
GUICtrlSetData(-1, "70|80|90", "90") ; default 80%
$MHP = GUICtrlRead($tab1combo)
$tab0 = GUICtrlCreateTabItem("1")
GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
GUICtrlCreateLabel("X", 30, 53, 50, 20)
GUICtrlCreateLabel("Y", 30, 103, 50, 20)
$tab0Start = GUICtrlCreateButton("Save and Start", 10, 150, 115, 20)
GUICtrlSetOnEvent(-1, "OKPressed")
$tab0Exit = GUICtrlCreateButton("Exit", 125, 150, 115, 20)
GUICtrlSetOnEvent(-1, "CancelPressed")
$tab01input = GUICtrlCreateInput("X", 80, 50, 90, 20)
$tab02input = GUICtrlCreateInput("Y", 80, 100, 90, 20)
GUICtrlCreateTabItem("") ; end tabitem definition
GUISetState()
$Acc = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "X", "")
GUICtrlSetData($tab01input, $Acc)
$Pass = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "Y", "")
GUICtrlSetData($tab02input, $Pass)
While 1
Sleep(5000) ;Ждём 5 секунд
If Not $iLoopIsPaused Then Write()
WEnd
Func Write()
IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "X", GUICtrlRead($tab01input))
IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "Y", GUICtrlRead($tab02input))
$MHP = GUICtrlRead($tab1combo)
Switch $MHP
Case "70"
IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "70")
Case "80"
IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "80")
Case "90"
IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "90")
EndSwitch
$MHPex = GUICtrlRead($tab2combo)
Switch $MHPex
Case "20"
IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "20")
Case "30"
IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "30")
Case "40"
IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "40")
EndSwitch
EndFunc ;==>Write
Func OKPressed()
$iLoopIsPaused = True ;Это "сообщит" циклу что функцию Write() не нужно запускать
;Тут мы выполняем что нам нужно
$iLoopIsPaused = False ;Тут мы как бы снова даём циклу "понять" что функцию Write() нужно запускать
EndFunc ;==>OKPressed
Func CancelPressed()
Exit
EndFunc ;==>CancelPressed
Func SpecialEvents()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE
Case $GUI_EVENT_RESTORE
EndSwitch
EndFunc ;==>SpecialEvents
|