Что нового

[Элементы GUI] Остановить цикл While в функции GUI кнопкой

ИноЙ

Новичок
Сообщения
7
Репутация
0
Здравствуйте. Есть такой код:

Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>

Global $on,$off
Global $flag = 1

Opt("GUIOnEventMode", 1)  ; Включает режим OnEvent
$hGUI = GUICreate("Моя прога", 370)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$on = GUICtrlCreateButton( "Вкл.", 40, 100, 70)
GUICtrlSetOnEvent($on, "on")

$off = GUICtrlCreateButton( "Выкл.", 40, 150, 70)
GUICtrlSetOnEvent($off, "off")

GUISetState(@SW_SHOW)

While 1
	Sleep(1000)
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func on()
	While $flag = 1
		Sleep(1000)
		Run ("notepad.exe")
		Sleep(2000)
		Send("qwerty", 1)
		Sleep(1000)
		ProcessClose("notepad.exe")
	WEnd
EndFunc

Func off()
Global $flag = 0
EndFunc

Второй день ломаю голову, как сделать так, чтобы при нажатии кнопки "Выкл." цикл в функции
Код:
on()
останавливался,пользователь делал некоторые изменения в программе,нажимал "Вкл." и цикл в функции
Код:
on()
продолжал свою работу или начинался заново(не имеет значения).Действия в функции для примера,но смысл будет тот же-сделать действие,подождать,сделать действие,подождать и т.д. по кругу,пока пользователь не нажмет кнопку "Выкл."
 

Mur

Осваивающий
Сообщения
132
Репутация
32
http://autoit-script.ru/index.php?topic=13426.0
 
Автор
И

ИноЙ

Новичок
Сообщения
7
Репутация
0
Mur, в той теме используется
Код:
GUIGetMsg()
,который конфликтует с
Код:
Opt("GUIOnEventMode", 1)
.Значит,мне надо переписать весь код под
Код:
GUIGetMsg()
?
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>

Global $hOn, $hOff
Global $Flag

Opt("GUIOnEventMode", 1) ; Включает режим OnEvent

$hGUI = GUICreate("Моя прога", 370)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$hOn = GUICtrlCreateButton("Вкл.", 40, 100, 70)
GUICtrlSetOnEvent($hOn, "On")

$hOff = GUICtrlCreateButton("Выкл.", 40, 150, 70)
GUICtrlSetOnEvent($hOff, "Off")

GUISetState(@SW_SHOW)

While 1
	Sleep(200)

	Switch $Flag
		Case True
			Sleep(1000)
			Run("notepad.exe")
			Sleep(2000)
			Send("qwerty", 1)
			Sleep(1000)
			ProcessClose("notepad.exe")
	EndSwitch
WEnd

Func CLOSEClicked()
	Exit
EndFunc   ;==>CLOSEClicked

Func On()
	$Flag = True
EndFunc   ;==>on

Func Off()
	$Flag = False
EndFunc   ;==>off
 
Автор
И

ИноЙ

Новичок
Сообщения
7
Репутация
0
Spyhunter, спасибо работает, - не догадался свой цикл вставить в основной,всё пытался в функции его сделать :-[
 
Верх