Что нового

Остановить функцию не дожидаясь логического выполнения

sasha1304

Новичок
Сообщения
41
Репутация
0
Ребят подскажите как остановить данную функцию не дожидаясь полного её выполнения?
Код:
Func but_new() ;Функция
while 1	;запускаем цикл и крутим его пока на экране не появится кнопка

If PixelGetColor(1826,483) = 0xFF7700 Then

ExitLoop ;кнопка появилась, завершаем цикл

Sleep(31000) ;через 31 секунду выполняем клик по кнопке 

PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
					If Not @Error Then
						MouseClick("left",1826,483)
						Sleep(500)
						run_stavka1()
					Else
						MouseClick("left",1826,483)
						Sleep(500)
						run_stavka2()
					EndIf
					
Else
EndIf

WEnd
EndFunc
 
A

Alofa

Гость
Как вариант:
Код:
$iTrigg = 1
HotKeySet('{ESC}', 'but_new_Exit')

While $iTrigg ;запускаем цикл и крутим его пока на экране не появится кнопка или $iTrigg не станет = 0
	but_new()
WEnd

MsgBox(4096, '', 'Конец')

Func but_new() ;Функция
		If PixelGetColor(1826, 483) = 0xFF7700 Then
			but_new_Exit()
			Return 1 ;кнопка появилась, завершаем цикл

#cs ==== Эта часть никогда не сработает ==========
			Sleep(31000) ;через 31 секунду выполняем клик по кнопке

			PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
			If Not @error Then
				MouseClick("left", 1826, 483)
				Sleep(500)
				run_stavka1()
			Else
				MouseClick("left", 1826, 483)
				Sleep(500)
				run_stavka2()
			EndIf
#ce ==============================================
		Else
			
		EndIf
EndFunc   ;==>but_new

Func but_new_Exit()
	$iTrigg = 0
EndFunc
 
Автор
S

sasha1304

Новичок
Сообщения
41
Репутация
0
хм, вроде норм идея, осталось до ума довести. если у кого ещё есть идеи, кидайте буду благодарен.
Alofa сказал(а):
Как вариант:
Код:
$iTrigg = 1
HotKeySet('{ESC}', 'but_new_Exit')

While $iTrigg ;запускаем цикл и крутим его пока на экране не появится кнопка или $iTrigg не станет = 0
	but_new()
WEnd

MsgBox(4096, '', 'Конец')

Func but_new() ;Функция
		If PixelGetColor(1826, 483) = 0xFF7700 Then
			but_new_Exit()
			Return 1 ;кнопка появилась, завершаем цикл

#cs ==== Эта часть никогда не сработает ==========
			Sleep(31000) ;через 31 секунду выполняем клик по кнопке

			PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
			If Not @error Then
				MouseClick("left", 1826, 483)
				Sleep(500)
				run_stavka1()
			Else
				MouseClick("left", 1826, 483)
				Sleep(500)
				run_stavka2()
			EndIf
#ce ==============================================
		Else
			
		EndIf
EndFunc   ;==>but_new

Func but_new_Exit()
	$iTrigg = 0
EndFunc


Добавлено:
Сообщение автоматически объединено:

ребят, не подходит данный вариант, т.к цикл должен быть именно в функции. выкладываю весь код, что было ясно.
Код:
#AutoIt3Wrapper_Icon=favicon.ico
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <ComboConstants.au3>
#include <ListBoxConstants.au3>
#include <ButtonConstants.au3>
#include <Misc.au3>

if _Singleton(@ScriptName,1) = 0 Then
	MsgBox(64, "Сообщение", "Робот уже запущен, запуск второй копии запрещён!")
	Exit
EndIf

Global $valid_num3, $valid_num4, $valid_num5, $valid_num6, $valid_num7, $valid_num8, $valid_num9, $valid_num10, $value_summ1, $value_summ2, $value_summ3, $value_summ4, $value_summ5, $value_summ6, $value_summ7, $value_summ8, $value_summ9, $value_summ10, $value_option1, $value_option2, $value_option3, $value_option4, $value_option5, $value_option6, $value_option7, $value_option8, $value_option9, $value_option10, $coord_left = 1460,$coord_top = 170,$coord_right = 1775,$coord_bottom = 225

$gui_robo = GUICreate("Robo IQ Option Ver 1.00", 270, 255, -1, -1, -1, $WS_EX_CONTROLPARENT)
GUICtrlCreatePic(@ScriptDir & "\img\iq-robo-fon.jpg", 0, 0, 270, 255)
GUICtrlSetState(-1, $GUI_DISABLE)

$run_stop = GUICtrlCreateButton("Торговать", 180, 5, 80, 20)

$chshow = GUICtrlCreateCheckbox("", 130, 33, 13, 13)
GUICtrlCreateLabel("Поверх всех окон", 142, 30, 120, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont(-1, 10, 500)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)

$num1 = GUICtrlCreateLabel('1', 5, 5, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num1, 11, 800)
GUICtrlSetColor($num1, 0xFFFFFF)
GUICtrlSetBkColor($num1, $GUI_BKCOLOR_TRANSPARENT)
$option1 = GUICtrlCreateCombo("", 30, 5, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option1, "Call|Put", "Call")
$summ1 = GUICtrlCreateInput("1.00", 75, 5, 50, 20)

$num2 = GUICtrlCreateLabel('2', 5, 30, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num2, 11, 800)
GUICtrlSetColor($num2, 0xFFFFFF)
GUICtrlSetBkColor($num2, $GUI_BKCOLOR_TRANSPARENT)
$option2 = GUICtrlCreateCombo("", 30, 30, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option2, "Call|Put", "Call")
$summ2 = GUICtrlCreateInput("1.00", 75, 30, 50, 20)
$btn_add_option3 = GUICtrlCreateButton("+", 130, 5, 20, 20)

$num3 = GUICtrlCreateLabel('3', 5, 55, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num3, 11, 800)
GUICtrlSetColor($num3, 0xFFFFFF)
GUICtrlSetBkColor($num3, $GUI_BKCOLOR_TRANSPARENT)
$option3 = GUICtrlCreateCombo("", 30, 55, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option3, "Call|Put", "Call")
$summ3 = GUICtrlCreateInput("1.00", 75, 55, 50, 20)
$btn_del_option3 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option4 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num3, $GUI_HIDE)
GUICtrlSetState($Option3, $GUI_HIDE)
GUICtrlSetState($summ3, $GUI_HIDE)
GUICtrlSetState($btn_del_option3, $GUI_HIDE)
GUICtrlSetState($btn_add_option4, $GUI_HIDE)

$num4 = GUICtrlCreateLabel('4', 5, 80, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num4, 11, 800)
GUICtrlSetColor($num4, 0xFFFFFF)
GUICtrlSetBkColor($num4, $GUI_BKCOLOR_TRANSPARENT)
$option4 = GUICtrlCreateCombo("", 30, 80, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option4, "Call|Put", "Call")
$summ4 = GUICtrlCreateInput("1.00", 75, 80, 50, 20)
$btn_del_option4 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option5 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num4, $GUI_HIDE)
GUICtrlSetState($Option4, $GUI_HIDE)
GUICtrlSetState($summ4, $GUI_HIDE)
GUICtrlSetState($btn_del_option4, $GUI_HIDE)
GUICtrlSetState($btn_add_option5, $GUI_HIDE)

$num5 = GUICtrlCreateLabel('5', 5, 105, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num5, 11, 800)
GUICtrlSetColor($num5, 0xFFFFFF)
GUICtrlSetBkColor($num5, $GUI_BKCOLOR_TRANSPARENT)
$option5 = GUICtrlCreateCombo("", 30, 105, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option5, "Call|Put", "Call")
$summ5 = GUICtrlCreateInput("1.00", 75, 105, 50, 20)
$btn_del_option5 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option6 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num5, $GUI_HIDE)
GUICtrlSetState($Option5, $GUI_HIDE)
GUICtrlSetState($summ5, $GUI_HIDE)
GUICtrlSetState($btn_del_option5, $GUI_HIDE)
GUICtrlSetState($btn_add_option6, $GUI_HIDE)

$num6 = GUICtrlCreateLabel('6', 5, 130, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num6, 11, 800)
GUICtrlSetColor($num6, 0xFFFFFF)
GUICtrlSetBkColor($num6, $GUI_BKCOLOR_TRANSPARENT)
$option6 = GUICtrlCreateCombo("", 30, 130, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option6, "Call|Put", "Call")
$summ6 = GUICtrlCreateInput("1.00", 75, 130, 50, 20)
$btn_del_option6 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option7 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num6, $GUI_HIDE)
GUICtrlSetState($Option6, $GUI_HIDE)
GUICtrlSetState($summ6, $GUI_HIDE)
GUICtrlSetState($btn_del_option6, $GUI_HIDE)
GUICtrlSetState($btn_add_option7, $GUI_HIDE)

$num7 = GUICtrlCreateLabel('7', 5, 155, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num7, 11, 800)
GUICtrlSetColor($num7, 0xFFFFFF)
GUICtrlSetBkColor($num7, $GUI_BKCOLOR_TRANSPARENT)
$option7 = GUICtrlCreateCombo("", 30, 155, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option7, "Call|Put", "Call")
$summ7 = GUICtrlCreateInput("1.00", 75, 155, 50, 20)
$btn_del_option7 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option8 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num7, $GUI_HIDE)
GUICtrlSetState($Option7, $GUI_HIDE)
GUICtrlSetState($summ7, $GUI_HIDE)
GUICtrlSetState($btn_del_option7, $GUI_HIDE)
GUICtrlSetState($btn_add_option8, $GUI_HIDE)

$num8 = GUICtrlCreateLabel('8', 5, 180, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num8, 11, 800)
GUICtrlSetColor($num8, 0xFFFFFF)
GUICtrlSetBkColor($num8, $GUI_BKCOLOR_TRANSPARENT)
$option8 = GUICtrlCreateCombo("", 30, 180, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option8, "Call|Put", "Call")
$summ8 = GUICtrlCreateInput("1.00", 75, 180, 50, 20)
$btn_del_option8 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option9 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num8, $GUI_HIDE)
GUICtrlSetState($Option8, $GUI_HIDE)
GUICtrlSetState($summ8, $GUI_HIDE)
GUICtrlSetState($btn_del_option8, $GUI_HIDE)
GUICtrlSetState($btn_add_option9, $GUI_HIDE)

$num9 = GUICtrlCreateLabel('9', 5, 205, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num9, 11, 800)
GUICtrlSetColor($num9, 0xFFFFFF)
GUICtrlSetBkColor($num9, $GUI_BKCOLOR_TRANSPARENT)
$option9 = GUICtrlCreateCombo("", 30, 205, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option9, "Call|Put", "Call")
$summ9 = GUICtrlCreateInput("1.00", 75, 205, 50, 20)
$btn_del_option9 = GUICtrlCreateButton("-", 130, 5, 20, 20)
$btn_add_option10 = GUICtrlCreateButton("+", 155, 5, 20, 20)

GUICtrlSetState($num9, $GUI_HIDE)
GUICtrlSetState($Option9, $GUI_HIDE)
GUICtrlSetState($summ9, $GUI_HIDE)
GUICtrlSetState($btn_del_option9, $GUI_HIDE)
GUICtrlSetState($btn_add_option10, $GUI_HIDE)

$num10 = GUICtrlCreateLabel('10', 5, 230, 20, 20, $SS_CENTERIMAGE + $SS_CENTER)
GUICtrlSetFont($num10, 11, 800)
GUICtrlSetColor($num10, 0xFFFFFF)
GUICtrlSetBkColor($num10, $GUI_BKCOLOR_TRANSPARENT)
$option10 = GUICtrlCreateCombo("", 30, 230, 40, 150, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData($option10, "Call|Put", "Call")
$summ10 = GUICtrlCreateInput("1.00", 75, 230, 50, 20)
$btn_del_option10 = GUICtrlCreateButton("-", 130, 5, 20, 20)

GUICtrlSetState($num10, $GUI_HIDE)
GUICtrlSetState($Option10, $GUI_HIDE)
GUICtrlSetState($summ10, $GUI_HIDE)
GUICtrlSetState($btn_del_option10, $GUI_HIDE)

GUISetState()

Func add_option3()
	GUICtrlSetState($num3, $GUI_SHOW)
	GUICtrlSetState($option3, $GUI_SHOW)
	GUICtrlSetState($summ3, $GUI_SHOW)
	GUICtrlSetState($btn_del_option3, $GUI_SHOW)
	GUICtrlSetState($btn_add_option4, $GUI_SHOW)
	GUICtrlSetState($btn_add_option3, $GUI_HIDE)
EndFunc
Func del_option3()
	GUICtrlSetState($num3, $GUI_HIDE)
	GUICtrlSetState($option3, $GUI_HIDE)
	GUICtrlSetState($summ3, $GUI_HIDE)
	GUICtrlSetState($btn_del_option3, $GUI_HIDE)
	GUICtrlSetState($btn_add_option4, $GUI_HIDE)
	GUICtrlSetState($btn_add_option3, $GUI_SHOW)
EndFunc
Func add_option4()
	GUICtrlSetState($num4, $GUI_SHOW)
	GUICtrlSetState($option4, $GUI_SHOW)
	GUICtrlSetState($summ4, $GUI_SHOW)
	GUICtrlSetState($btn_del_option3, $GUI_HIDE)
	GUICtrlSetState($btn_add_option4, $GUI_SHOW)
	GUICtrlSetState($btn_add_option4, $GUI_HIDE)
	GUICtrlSetState($btn_del_option4, $GUI_SHOW)
	GUICtrlSetState($btn_add_option5, $GUI_SHOW)
EndFunc
Func del_option4()
	GUICtrlSetState($num4, $GUI_HIDE)
	GUICtrlSetState($option4, $GUI_HIDE)
	GUICtrlSetState($summ4, $GUI_HIDE)
	GUICtrlSetState($btn_del_option3, $GUI_SHOW)
	GUICtrlSetState($btn_add_option4, $GUI_SHOW)
	GUICtrlSetState($btn_del_option4, $GUI_HIDE)
	GUICtrlSetState($btn_add_option5, $GUI_HIDE)
EndFunc
Func add_option5()
	GUICtrlSetState($num5, $GUI_SHOW)
	GUICtrlSetState($Option5, $GUI_SHOW)
	GUICtrlSetState($summ5, $GUI_SHOW)
	GUICtrlSetState($btn_del_option5, $GUI_SHOW)
	GUICtrlSetState($btn_add_option6, $GUI_SHOW)
	GUICtrlSetState($btn_del_option4, $GUI_HIDE)
	GUICtrlSetState($btn_add_option5, $GUI_HIDE)
EndFunc
Func del_option5()
	GUICtrlSetState($num5, $GUI_HIDE)
	GUICtrlSetState($Option5, $GUI_HIDE)
	GUICtrlSetState($summ5, $GUI_HIDE)
	GUICtrlSetState($btn_del_option5, $GUI_HIDE)
	GUICtrlSetState($btn_add_option6, $GUI_HIDE)
	GUICtrlSetState($btn_del_option4, $GUI_SHOW)
	GUICtrlSetState($btn_add_option5, $GUI_SHOW)
EndFunc
Func add_option6()
	GUICtrlSetState($num6, $GUI_SHOW)
	GUICtrlSetState($Option6, $GUI_SHOW)
	GUICtrlSetState($summ6, $GUI_SHOW)
	GUICtrlSetState($btn_del_option6, $GUI_SHOW)
	GUICtrlSetState($btn_add_option7, $GUI_SHOW)
	GUICtrlSetState($btn_del_option5, $GUI_HIDE)
	GUICtrlSetState($btn_add_option6, $GUI_HIDE)
EndFunc
Func del_option6()
	GUICtrlSetState($num6, $GUI_HIDE)
	GUICtrlSetState($Option6, $GUI_HIDE)
	GUICtrlSetState($summ6, $GUI_HIDE)
	GUICtrlSetState($btn_del_option6, $GUI_HIDE)
	GUICtrlSetState($btn_add_option7, $GUI_HIDE)
	GUICtrlSetState($btn_del_option5, $GUI_SHOW)
	GUICtrlSetState($btn_add_option6, $GUI_SHOW)
EndFunc
Func add_option7()
	GUICtrlSetState($num7, $GUI_SHOW)
	GUICtrlSetState($Option7, $GUI_SHOW)
	GUICtrlSetState($summ7, $GUI_SHOW)
	GUICtrlSetState($btn_del_option7, $GUI_SHOW)
	GUICtrlSetState($btn_add_option7, $GUI_SHOW)
	GUICtrlSetState($btn_add_option8, $GUI_SHOW)
	GUICtrlSetState($btn_del_option6, $GUI_HIDE)
	GUICtrlSetState($btn_add_option7, $GUI_HIDE)
EndFunc
Func del_option7()
	GUICtrlSetState($num7, $GUI_HIDE)
	GUICtrlSetState($Option7, $GUI_HIDE)
	GUICtrlSetState($summ7, $GUI_HIDE)
	GUICtrlSetState($btn_del_option7, $GUI_HIDE)
	GUICtrlSetState($btn_add_option8, $GUI_HIDE)
	GUICtrlSetState($btn_del_option6, $GUI_SHOW)
	GUICtrlSetState($btn_add_option7, $GUI_SHOW)
EndFunc
Func add_option8()
	GUICtrlSetState($num8, $GUI_SHOW)
	GUICtrlSetState($Option8, $GUI_SHOW)
	GUICtrlSetState($summ8, $GUI_SHOW)
	GUICtrlSetState($btn_del_option8, $GUI_SHOW)
	GUICtrlSetState($btn_add_option8, $GUI_SHOW)
	GUICtrlSetState($btn_add_option9, $GUI_SHOW)
	GUICtrlSetState($btn_del_option7, $GUI_HIDE)
	GUICtrlSetState($btn_add_option8, $GUI_HIDE)
EndFunc
Func del_option8()
	GUICtrlSetState($num8, $GUI_HIDE)
	GUICtrlSetState($Option8, $GUI_HIDE)
	GUICtrlSetState($summ8, $GUI_HIDE)
	GUICtrlSetState($btn_del_option8, $GUI_HIDE)
	GUICtrlSetState($btn_add_option8, $GUI_HIDE)
	GUICtrlSetState($btn_add_option9, $GUI_HIDE)
	GUICtrlSetState($btn_del_option7, $GUI_SHOW)
	GUICtrlSetState($btn_add_option8, $GUI_SHOW)
EndFunc
Func add_option9()
	GUICtrlSetState($num9, $GUI_SHOW)
	GUICtrlSetState($Option9, $GUI_SHOW)
	GUICtrlSetState($summ9, $GUI_SHOW)
	GUICtrlSetState($btn_del_option9, $GUI_SHOW)
	GUICtrlSetState($btn_add_option9, $GUI_SHOW)
	GUICtrlSetState($btn_add_option10, $GUI_SHOW)
	GUICtrlSetState($btn_del_option8, $GUI_HIDE)
	GUICtrlSetState($btn_add_option9, $GUI_HIDE)
EndFunc
Func del_option9()
	GUICtrlSetState($num9, $GUI_HIDE)
	GUICtrlSetState($Option9, $GUI_HIDE)
	GUICtrlSetState($summ9, $GUI_HIDE)
	GUICtrlSetState($btn_del_option9, $GUI_HIDE)
	GUICtrlSetState($btn_add_option9, $GUI_HIDE)
	GUICtrlSetState($btn_add_option10, $GUI_HIDE)
	GUICtrlSetState($btn_del_option8, $GUI_SHOW)
	GUICtrlSetState($btn_add_option9, $GUI_SHOW)
EndFunc
Func add_option10()
	GUICtrlSetState($num10, $GUI_SHOW)
	GUICtrlSetState($Option10, $GUI_SHOW)
	GUICtrlSetState($summ10, $GUI_SHOW)
	GUICtrlSetState($btn_del_option10, $GUI_SHOW)
	GUICtrlSetState($btn_add_option10, $GUI_SHOW)
	GUICtrlSetState($btn_add_option10, $GUI_SHOW)
	GUICtrlSetState($btn_del_option9, $GUI_HIDE)
	GUICtrlSetState($btn_add_option10, $GUI_HIDE)
EndFunc
Func del_option10()
	GUICtrlSetState($num10, $GUI_HIDE)
	GUICtrlSetState($Option10, $GUI_HIDE)
	GUICtrlSetState($summ10, $GUI_HIDE)
	GUICtrlSetState($btn_del_option10, $GUI_HIDE)
	GUICtrlSetState($btn_del_option9, $GUI_SHOW)
	GUICtrlSetState($btn_add_option10, $GUI_SHOW)
EndFunc


Func run_stavka1()
If $value_summ1 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ1)

Select
	Case $value_option1 = "Call"
		MouseClick("left",1839,474)
		but_new()

	Case $value_option1 = "Put"
		MouseClick("left",1869,602)
		but_new()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc

Func but_new() ;Функция
while 1

If PixelGetColor(1826,483) = 0xFF7700 Then
	Sleep(31000)
	PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
					If Not @Error Then
						MouseClick("left",1826,483)
						Sleep(500)
						run_stavka1()
						ExitLoop
					Else
						MouseClick("left",1826,483)
						Sleep(500)
						run_stavka2()
						ExitLoop
					EndIf
EndIf

WEnd
EndFunc


Func run_stavka2()
If $value_summ2 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ2)

Select
	Case $value_option2 = "Call"
			MouseClick("left",1839,474)
			but_new2()
	Case $value_option2 = "Put"
			MouseClick("left",1869,602)
			but_new2()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new2()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num3, $GUI_SHOW)
			run_stavka3()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new2()
EndIf
EndFunc


Func run_stavka3()
If $value_summ3 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ3)

Select
	Case $value_option3 = "Call"
			MouseClick("left",1839,474)
			but_new3()
	Case $value_option3 = "Put"
			MouseClick("left",1869,602)
			but_new3()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new3()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num4, $GUI_SHOW)
			run_stavka4()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new3()
EndIf
EndFunc


Func run_stavka4()
If $value_summ4 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ4)

Select
	Case $value_option4 = "Call"
			MouseClick("left",1839,474)
			but_new4()
	Case $value_option4 = "Put"
			MouseClick("left",1869,602)
			but_new4()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new4()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num5, $GUI_SHOW)
			run_stavka5()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new4()
EndIf
EndFunc


Func run_stavka5()
If $value_summ5 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ5)

Select
	Case $value_option5 = "Call"
			MouseClick("left",1839,474)
			but_new5()
	Case $value_option5 = "Put"
			MouseClick("left",1869,602)
			but_new5()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new5()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num6, $GUI_SHOW)
			run_stavka6()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new5()
EndIf
EndFunc


Func run_stavka6()
If $value_summ6 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ6)

Select
	Case $value_option6 = "Call"
			MouseClick("left",1839,474)
			but_new6()
	Case $value_option6 = "Put"
			MouseClick("left",1869,602)
			but_new6()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new6()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num7, $GUI_SHOW)
			run_stavka7()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new6()
EndIf
EndFunc


Func run_stavka7()
If $value_summ7 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ7)

Select
	Case $value_option7 = "Call"
			MouseClick("left",1839,474)
			but_new7()
	Case $value_option7 = "Put"
			MouseClick("left",1869,602)
			but_new7()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new7()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num8, $GUI_SHOW)
			run_stavka8()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new7()
EndIf
EndFunc


Func run_stavka8()
If $value_summ8 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ8)

Select
	Case $value_option8 = "Call"
			MouseClick("left",1839,474)
			but_new8()
	Case $value_option8 = "Put"
			MouseClick("left",1869,602)
			but_new8()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new8()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num9, $GUI_SHOW)
			run_stavka9()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new8()
EndIf
EndFunc


Func run_stavka9()
If $value_summ9 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ9)

Select
	Case $value_option9 = "Call"
			MouseClick("left",1839,474)
			but_new9()
	Case $value_option8 = "Put"
			MouseClick("left",1869,602)
			but_new9()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new9()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)

		Select
		Case BitAND($valid_num10, $GUI_SHOW)
			run_stavka10()
		Case Else
			run_stavka1()
		EndSelect

	EndIf
Else
	Sleep(500)
	but_new9()
EndIf
EndFunc


Func run_stavka10()
If $value_summ10 Not = 0 Then
	;Sleep(5000)
	MouseClick("left",1886,288)
	Sleep(300)
	Send("+{BS 6}")
	Sleep(300)
	Send($value_summ10)

Select
	Case $value_option10 = "Call"
			MouseClick("left",1839,474)
			but_new10()
	Case $value_option10 = "Put"
			MouseClick("left",1869,602)
			but_new10()
EndSelect

Else
	MsgBox(64, "Проверка", "Поле Input1 не заполнено!")
EndIf
EndFunc


Func but_new10()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
	If Not @Error Then
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	Else
		MouseClick("left",1826,483)
		Sleep(500)
		run_stavka1()
	EndIf
Else
	Sleep(500)
	but_new10()
EndIf
EndFunc

Func btn_run_stop()
		if GUICtrlRead($run_stop) = "Торговать" Then
			GUICtrlDelete($run_stop)
			$run_stop = -1
			$run_stop = GUICtrlCreateButton("Стоп", 180, 5, 80, 20)
			run_stavka1()
		Else
			GUICtrlDelete($run_stop)
			$run_stop = -1
			$run_stop = GUICtrlCreateButton("Торговать", 180, 5, 80, 20)
		EndIf
EndFunc

Func gui_show()
If GUICtrlRead($chshow) = 1 Then
	WinSetOnTop($gui_robo, "", 1)
Else
	WinSetOnTop($gui_robo, "", 0)
EndIf
EndFunc

While 1
$valid_num3 = GUICtrlGetState($num3)
$valid_num4 = GUICtrlGetState($num4)
$valid_num5 = GUICtrlGetState($num5)
$valid_num6 = GUICtrlGetState($num6)
$valid_num7 = GUICtrlGetState($num7)
$valid_num8 = GUICtrlGetState($num8)
$valid_num9 = GUICtrlGetState($num9)
$valid_num10 = GUICtrlGetState($num10)


$value_summ1 = GUICtrlRead($summ1)
$value_summ2 = GUICtrlRead($summ2)
$value_summ3 = GUICtrlRead($summ3)
$value_summ4 = GUICtrlRead($summ4)
$value_summ5 = GUICtrlRead($summ5)
$value_summ6 = GUICtrlRead($summ6)
$value_summ7 = GUICtrlRead($summ7)
$value_summ8 = GUICtrlRead($summ8)
$value_summ9 = GUICtrlRead($summ9)
$value_summ10 = GUICtrlRead($summ10)

$value_option1 = GUICtrlRead($option1)
$value_option2 = GUICtrlRead($option2)
$value_option3 = GUICtrlRead($option3)
$value_option4 = GUICtrlRead($option4)
$value_option5 = GUICtrlRead($option5)
$value_option6 = GUICtrlRead($option6)
$value_option7 = GUICtrlRead($option7)
$value_option8 = GUICtrlRead($option8)
$value_option9 = GUICtrlRead($option9)
$value_option10 = GUICtrlRead($option10)

	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $chshow
			gui_show()
		Case $run_stop
			 btn_run_stop()
		Case $btn_add_option3
				add_option3()
		Case $btn_del_option3
				del_option3()
		Case $btn_add_option4
				add_option4()
		Case $btn_del_option4
				del_option4()
		Case $btn_add_option5
				add_option5()
		Case $btn_del_option5
				del_option5()
		Case $btn_add_option6
				add_option6()
		Case $btn_del_option6
				del_option6()
		Case $btn_add_option7
				add_option7()
		Case $btn_del_option7
				del_option7()
		Case $btn_add_option8
				add_option8()
		Case $btn_del_option8
				del_option8()
		Case $btn_add_option9
				add_option9()
		Case $btn_del_option9
				del_option9()
		Case $btn_add_option10
				add_option10()
		Case $btn_del_option10
				del_option10()
	EndSwitch
WEnd
 
A

Alofa

Гость
sasha1304 сказал(а):
... не подходит данный вариант, т.к цикл должен быть именно в функции.

А что вам мешает перевести ваш GUI в режим OnEvent - как раз ваш случай.
В основном цикле пропишите примерно следующее:
Код:
While 1
	
	If $iTrigg Then but_new()
		
	$valid_num3 = GUICtrlGetState($num3)
	$valid_num4 = GUICtrlGetState($num4)
	$valid_num5 = GUICtrlGetState($num5)
; ...
; ...

WEnd
У вас все кнопки, как никак кстати, заведены на выполнение той или иной пользовательской функции. А после нажатия "Торговать" ни одна из кнопок не реагирует, потому что вся основная работа скрипта проходит не в том, в каком нужно цикле.

Но правды ради надо сказать, что у подобного подхода (как в моем скрипте) есть один большой минус: состояние переменной $iTrigg проверяется только 1 раз в начале каждого цикла. Т.е. даже если вы в GUI нажмете "Стоп", то цикл дойдет до конца и только тогда произойдет реакция.
 
Автор
S

sasha1304

Новичок
Сообщения
41
Репутация
0
а если так сделать без цикла, то можно как то остановить функцию не дожидаясь выполнения условия?

Код:
Func but_new()
If PixelGetColor(1826,483) = 0xFF7700 Then
Sleep(31000)
PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
					If Not @Error Then
						MouseClick("left",1826,483)
						Sleep(500)
						run_stavka1()
					Else
						MouseClick("left",1826,483)
						Sleep(500)
						run_stavka2()
					EndIf
EndIf
but_new()
EndFunc
 
Автор
S

sasha1304

Новичок
Сообщения
41
Репутация
0
4 дня бошку ломаю, решения как экстренно завершить цикл не нашёл. может ещё кто то поможет?
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Не уверен, что верно понял задачу:
Код:
$iTrigg = 1

...
HotKeySet('{ESC}', 'but_new_Exit') ;Или GUISetAccelerators()
...
Func but_new()
    Local $iT = 0
    If PixelGetColor(1826,483) = 0xFF7700 Then
        ;Sleep(31000)
        While 1
            If $iTrigg = 0 Then
                $iTrigg = 1
                Return 1
            Else
                $iT += 200
                If $iT >= 31000 Then ExitLoop
            EndIf
        WEnd
        PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
        If Not @Error Then
            MouseClick("left",1826,483)
            Sleep(500)
            run_stavka1()
        Else
            MouseClick("left",1826,483)
            Sleep(500)
            run_stavka2()
        EndIf
    EndIf
    but_new()
EndFunc

...
Func but_new_Exit()
    $iTrigg = 0
EndFunc
?
+проверка $iTrigg в вызываемых функциях.
 
Автор
S

sasha1304

Новичок
Сообщения
41
Репутация
0
Skif_off сказал(а):
Не уверен, что верно понял задачу:
Код:
$iTrigg = 1

...
HotKeySet('{ESC}', 'but_new_Exit') ;Или GUISetAccelerators()
...
Func but_new()
    Local $iT = 0
    If PixelGetColor(1826,483) = 0xFF7700 Then
        ;Sleep(31000)
        While 1
            If $iTrigg = 0 Then
                $iTrigg = 1
                Return 1
            Else
                $iT += 200
                If $iT >= 31000 Then ExitLoop
            EndIf
        WEnd
        PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
        If Not @Error Then
            MouseClick("left",1826,483)
            Sleep(500)
            run_stavka1()
        Else
            MouseClick("left",1826,483)
            Sleep(500)
            run_stavka2()
        EndIf
    EndIf
    but_new()
EndFunc

...
Func but_new_Exit()
    $iTrigg = 0
EndFunc
?
+проверка $iTrigg в вызываемых функциях.

Придумал решение. просто скопировал Select в цикл.
Код:
Func but_new()
While $trigger
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			Exit
		Case $msg = $chshow
				gui_show()
		Case $msg = $run_stop		
				btn_run_stop()
	EndSelect
	If PixelGetColor(1826,483) = 0xFF7700 Then
	;Sleep(31000)
	PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
		If Not @Error Then
			MouseClick("left",1826,483)
			run_stavka1()
			ExitLoop
		Else
			MouseClick("left",1826,483)
			run_stavka2()
			ExitLoop
		EndIf
	EndIf
WEnd
EndFunc
 
A

Alofa

Гость
sasha1304 сказал(а):
... Придумал решение.
Да? Раскомментируйте Sleep(31000) и проверьте работоспособность кнопочек.


Добавлено:
Сообщение автоматически объединено:

Вот аналог предложеного мной варианта:
http://autoit-script.ru/index.php/topic,357.0.html (может так понятней будет)
Или еще вариант:
http://autoit-script.ru/index.php/topic,417.0.html
 
Автор
S

sasha1304

Новичок
Сообщения
41
Репутация
0
Alofa сказал(а):
sasha1304 сказал(а):
... Придумал решение.
Да? Раскомментируйте Sleep(31000) и проверьте работоспособность кнопочек.


Добавлено:
Сообщение автоматически объединено:

Вот аналог предложеного мной варианта:
http://autoit-script.ru/index.php/topic,357.0.html (может так понятней будет)
Или еще вариант:
http://autoit-script.ru/index.php/topic,417.0.html




вот блин, про Sleep совсем забыл ;D
 
Автор
S

sasha1304

Новичок
Сообщения
41
Репутация
0
Alofa сказал(а):
sasha1304 сказал(а):
... Придумал решение.
Да? Раскомментируйте Sleep(31000) и проверьте работоспособность кнопочек.


Добавлено:
Сообщение автоматически объединено:

Вот аналог предложеного мной варианта:
http://autoit-script.ru/index.php/topic,357.0.html (может так понятней будет)
Или еще вариант:
http://autoit-script.ru/index.php/topic,417.0.html




решил не использовать, Sleep, а сделал отсчёт времени циклом For, смотрите решение, может кому пригодится

Код:
Func but_new()
While $trigger

$msg = GUIGetMsg()
Select
	Case $msg = $GUI_EVENT_CLOSE
		Exit
	Case $msg = $chshow
		gui_show()
	Case $msg = $run_stop
		btn_run_stop()
EndSelect
If PixelGetColor(1826,483) = 0xFF7700 Then
		For $time = 2900 To 0 Step -1
				$msg = GUIGetMsg()
			Select			
				Case $msg = $GUI_EVENT_CLOSE
					Exit
				Case $msg = $chshow
					gui_show()
				Case $msg = $run_stop
					btn_run_stop()
					$time = 0
			EndSelect
		Next
	If $trigger = 1 Then
		PixelSearch($coord_left, $coord_top, $coord_right, $coord_bottom, 0x2BA73E)
		If Not @Error Then
			MouseClick("left",1826,483)
			run_stavka1()
			ExitLoop
		Else
			MouseClick("left",1826,483)
			run_stavka2()
			ExitLoop
		EndIf
	EndIf
EndIf
WEnd
EndFunc
 
Верх