Что нового

Создание окна с кнопками

Can

Новичок
Сообщения
59
Репутация
1
Здравствуйте. У меня скрипт написан на этом примере(только больше раз в 30):

Код:
HotKeySet("{ESC}", "_Exit")

Global $nF = 1

While 1
    Switch $nF
        Case 1
            Cycle1()
        Case 2
            Cycle2()
        Case 3
            Cycle3()
    EndSwitch
WEnd

Func _Exit()
    Exit
EndFunc

Func Cycle1()
    ConsoleWrite("Cycle1()" & @CRLF)
    Sleep(3000)
   PixelSearch( 100, 441, 880, 463, 0x84B400, 0, 1)      
   If Not @error Then
    $nF = 2 
  Else 
 $nF = 3
 EndIf 
EndFunc


Func Cycle2()
    ConsoleWrite("Cycle2()" & @CRLF)
    Sleep(3000)
    MouseMove(203, 529, 5) ;
		Sleep(500)          ;+
		MouseDown("left")    ;+
        Sleep(50)            ;+
        MouseUp("left")      ;+
		Sleep(800)           ;+
		MouseDown("left")    ;+
        Sleep(50)            ;+
        MouseUp("left")      ;+
    $nF = 3 
EndFunc


Func Cycle3()
    ConsoleWrite("Cycle3()" & @CRLF)
    Sleep(3000)
   MouseMove(30, 400, 5) ; 
		Sleep(500)          ;+
		MouseDown("left")    ;+
        Sleep(50)            ;+
        MouseUp("left")      ;+
		Sleep(800)           ;+
		MouseDown("left")    ;+
        Sleep(50)            ;+
        MouseUp("left")      ;+
    $nF = 1
EndFunc


Можно ли его сделать так, чтобы он работал в свернутом не активном окне, а то не получается на компе ничего делать, если скрипт запущен?
Заранее благодарен, так-ка всегда выручали!
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Re: Работа скрипта в свернутом или не активном окне

Can сказал(а):
Можно ли его сделать так, чтобы он работал в свернутом не активном окне, а то не получается на компе ничего делать, если скрипт запущен?Заранее благодарен, так-ка всегда выручали!
PixelSearch() и иже с ним, насколько мне известно, не работают со свёрнутыми окнами.
Так что только через виртуальный комп.
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
Re: Работа скрипта в свернутом или не активном окне

dwerf сказал(а):
Can сказал(а):
Можно ли его сделать так, чтобы он работал в свернутом не активном окне, а то не получается на компе ничего делать, если скрипт запущен?Заранее благодарен, так-ка всегда выручали!
PixelSearch() и иже с ним, насколько мне известно, не работают со свёрнутыми окнами.
Так что только через виртуальный комп.

Спасибо, у меня теперь другой вопрос:
Можно небольшой примерчик, как можно создать окно с надписями и напротив их кнопки, чтобы при нажатии на них например изменялись координаты мышки и поиска пикселей в уже готовом скрипте, в зависимости от того что я выберу?

Просто координаты постоянно менять надо в зависимости от ситуации, получается не удобно каждый раз редактировать скрипт, хотелось бы сразу прописать все, и вывести это на монитор в виде окна с кнопками, с выбором сценария.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Код:
$Form1 = GUICreate('Example', 640, 480)

GUICtrlCreateLabel('X-координата:', 10, 10, 100, 20)
GUICtrlCreateLabel('Y-координата:', 10, 40, 100, 20)

$Input1 = GUICtrlCreateInput(@DesktopWidth/2, 120, 10, 100, 20, BitOR(0x0002, 0x2000))
GUICtrlCreateUpdown(-1, 0x80)
GUICtrlSetLimit(-1, @DesktopWidth, 0)

$Input2 = GUICtrlCreateInput(@DesktopHeight/2, 120, 40, 100, 20, BitOR(0x0002, 0x2000))
GUICtrlCreateUpdown(-1, 0x80)
GUICtrlSetLimit(-1, @DesktopHeight, 0)

$Button1 = GUICtrlCreateButton('Старт', 10, 70, 100, 20)
$Button2 = GUICtrlCreateButton('Стоп', 120, 70, 100, 20)

Global $iCoordX, $iCoordY

GUISetState()

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $Button1
			Start()
		Case $Button2
			Stop()
	EndSwitch
WEnd

Func Start()
	$iCoordX = GUICtrlRead($Input1)
	$iCoordY = GUICtrlRead($Input2)
	
	AdlibRegister('Bot')
EndFunc

Func Stop()
	AdlibUnRegister('Bot')
	ToolTip('')
EndFunc

Func Bot()
	ToolTip(@HOUR & ':' & @MIN & ':' & @SEC, $iCoordX, $iCoordY, 'Время:')
EndFunc
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
dwerf [?]

Спасибо, окно работает, но я наверно не так немного выразился, с кнопками понятно, надо только их по вертикали сделать, а как к ним присвоить например функцию
Код:
Func Cycle2()
    ConsoleWrite("Cycle2()" & @CRLF)
    Sleep(3000)
    MouseMove(203, 529, 5) ;
        Sleep(500)          ;+
        MouseDown("left")    ;+
        Sleep(50)            ;+
        MouseUp("left")      ;+
        Sleep(800)           ;+
        MouseDown("left")    ;+
        Sleep(50)            ;+
        MouseUp("left")      ;+
    $nF = 3 
EndFunc


из моего первого скрипта, тоесть он прогигрывается, а мне нужно, чтобы при открытии программы и выборе кнопке, в ней менялся код, т е сам цикл, который я задам, и скрипт при запуске игрался уже по другому сценарию?

как бы ряд кнопок с присвоенными функциями , которые бы заменяли прописанные циклы в кнопках, и сам скрипт соответственно
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Can сказал(а):
из моего первого скрипта, тоесть он прогигрывается, а мне нужно, чтобы при открытии программы и выборе кнопке, в ней менялся код, т е сам цикл, который я задам, и скрипт при запуске игрался уже по другому сценарию?как бы ряд кнопок с присвоенными функциями , которые бы заменяли прописанные циклы в кнопках, и сам скрипт соответственно
Чаво? :wacko:

Написал для примера, как в исходном скрипте можно было бы подменять переменные.
Только функции закоментировал, чтоб не мешали, не знаю будет ли работать с ними.
Код:
HotKeySet("{ESC}", "_Exit")

Opt('GUIOnEventMode', 1)

Global $nF = 1

Global $ExampleText = 'balalajka'

GUICreate('Example', 640, 480)
GUICtrlCreateLabel('Текст вводить сюда ->', 10, 10, 120, 20)
$Input1 = GUICtrlCreateInput($ExampleText, 140, 10, 100, 20)
$Button1 = GUICtrlCreateButton('Update', 10, 40, 100, 20)
GUICtrlSetOnEvent(-1, 'Update')
GUISetOnEvent(-3, '_Exit')
GUISetState()

Func Update()
	$ExampleText = GUICtrlRead($Input1)
EndFunc

While 1
	ToolTip($ExampleText)
	Switch $nF
		Case 1
;~ 			Cycle1()
		Case 2
;~ 			Cycle2()
		Case 3
;~ 			Cycle3()
	EndSwitch
WEnd

Func _Exit()
	Exit
EndFunc

Func Cycle1()
	ConsoleWrite("Cycle1()" & @CRLF)
	Sleep(3000)
	PixelSearch( 100, 441, 880, 463, 0x84B400, 0, 1)
	If Not @error Then
		$nF = 2
	Else
		$nF = 3
	EndIf
EndFunc


Func Cycle2()
	ConsoleWrite("Cycle2()" & @CRLF)
	Sleep(3000)
	MouseMove(203, 529, 5) ;
	Sleep(500)		  ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	Sleep(800)		   ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	$nF = 3
EndFunc


Func Cycle3()
	ConsoleWrite("Cycle3()" & @CRLF)
	Sleep(3000)
	MouseMove(30, 400, 5) ;
	Sleep(500)		  ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	Sleep(800)		   ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	$nF = 1
EndFunc


Если так не подойдёт, то можно в принципе написать программу, которая в зависимости от нажатых в ней кнопок переписывала бы скрипт (или например ini-файл с настройками для скрипта) и перезапускала скрипт уже с новыми настройками.
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
dwerf сказал(а):
Can сказал(а):
из моего первого скрипта, тоесть он прогигрывается, а мне нужно, чтобы при открытии программы и выборе кнопке, в ней менялся код, т е сам цикл, который я задам, и скрипт при запуске игрался уже по другому сценарию?как бы ряд кнопок с присвоенными функциями , которые бы заменяли прописанные циклы в кнопках, и сам скрипт соответственно
Чаво? :wacko:

Написал для примера, как в исходном скрипте можно было бы подменять переменные.
Только функции закоментировал, чтоб не мешали, не знаю будет ли работать с ними.
Код:
HotKeySet("{ESC}", "_Exit")

Opt('GUIOnEventMode', 1)

Global $nF = 1

Global $ExampleText = 'balalajka'

GUICreate('Example', 640, 480)
GUICtrlCreateLabel('Текст вводить сюда ->', 10, 10, 120, 20)
$Input1 = GUICtrlCreateInput($ExampleText, 140, 10, 100, 20)
$Button1 = GUICtrlCreateButton('Update', 10, 40, 100, 20)
GUICtrlSetOnEvent(-1, 'Update')
GUISetOnEvent(-3, '_Exit')
GUISetState()

Func Update()
	$ExampleText = GUICtrlRead($Input1)
EndFunc

While 1
	ToolTip($ExampleText)
	Switch $nF
		Case 1
;~ 			Cycle1()
		Case 2
;~ 			Cycle2()
		Case 3
;~ 			Cycle3()
	EndSwitch
WEnd

Func _Exit()
	Exit
EndFunc

Func Cycle1()
	ConsoleWrite("Cycle1()" & @CRLF)
	Sleep(3000)
	PixelSearch( 100, 441, 880, 463, 0x84B400, 0, 1)
	If Not @error Then
		$nF = 2
	Else
		$nF = 3
	EndIf
EndFunc


Func Cycle2()
	ConsoleWrite("Cycle2()" & @CRLF)
	Sleep(3000)
	MouseMove(203, 529, 5) ;
	Sleep(500)		  ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	Sleep(800)		   ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	$nF = 3
EndFunc


Func Cycle3()
	ConsoleWrite("Cycle3()" & @CRLF)
	Sleep(3000)
	MouseMove(30, 400, 5) ;
	Sleep(500)		  ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	Sleep(800)		   ;+
	MouseDown("left")	;+
	Sleep(50)			;+
	MouseUp("left")	  ;+
	$nF = 1
EndFunc


Если так не подойдёт, то можно в принципе написать программу, которая в зависимости от нажатых в ней кнопок переписывала бы скрипт (или например ini-файл с настройками для скрипта) и перезапускала скрипт уже с новыми настройками.

Спасибо за ответ!

Нужно просто, чтобы в моей первой программе, при выборе и нажатии на кнопку(изменение цикла), весь скрипт при запуске заменял предыдущий, который был выбран.
Пример окна я сделал, потом подкорректирую, а как связать его с подменой основной программы?

Код:
$Form1 = GUICreate('Example', 640, 480)

GUICtrlCreateLabel('Меняем циклы: вместо 5 например - выбранный :', 10, 10, 400, 20 )


$Button1 = GUICtrlCreateButton('Проигрывается скрипт с циклом 2', 10, 70, 300, 20) ;меняется код Cycle1 на Cycle2
$Button2 = GUICtrlCreateButton('Проигрывается скрипт с циклом 3', 10, 90, 300, 20)  ;меняется код Cycle1 на Cycle3
$Button3 = GUICtrlCreateButton('Запускаем скрипт после внесения изменений, выбора выше', 50, 130, 350, 50) 
;запускаем программу по выбранному сценарию

GUISetState()

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $Button1
           Cycle2()
        Case $Button2
            Cycle3()
		Case $Button3
            Cycle1()
    EndSwitch
WEnd

; дальше идёт программа из первого моего примера
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Первый скрипт имеет ещё такую часть:
Код:
While 1
    Switch $nF
        Case 1
            Cycle1()
        Case 2
            Cycle2()
        Case 3
            Cycle3()
    EndSwitch
WEnd
и прыгает из цикла в цикл

это так и должно остаться?

А кнопки тогда нужны чтобы мануально сбросить скрипт в определённую "позицию"?
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
dwerf сказал(а):
Первый скрипт имеет ещё такую часть:
Код:
While 1
    Switch $nF
        Case 1
            Cycle1()
        Case 2
            Cycle2()
        Case 3
            Cycle3()
    EndSwitch
WEnd
и прыгает из цикла в цикл

это так и должно остаться?

А кнопки тогда нужны чтобы мануально сбросить скрипт в определённую "позицию"?

Да, общий скрипт постоянно работает, надо просто чтобы при запуске с помощью кнопок выбрать нужный вариант, и запустить его, как бы после выбора он работал по заданному сценарию. С помощью кнопок заменять отдельные циклы на другие( переключать). Например я напишу в конце основного скрипта 20 циклов, а потом при запуске буду выбирать, каким из этих 20 заменить например 3 цикл, это надо сделать с помощью кнопок, а потом просто нажимаю на кнопку запустить и всё, он постоянно работает.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Наверное чтото типа этого:
Код:
HotKeySet("{ESC}", "_Exit")

Opt('GUIOnEventMode', 1)

Global $nF = 1, $Started = False

Global $Cycle1 = 'Func1', $Cycle2 = 'Func2', $Cycle3 = 'Func3'

GUICreate('Example', 640, 480)
GUICtrlCreateLabel('Cycle1:', 10, 12, 40, 20)
GUICtrlCreateLabel('Cycle2:', 10, 42, 40, 20)
GUICtrlCreateLabel('Cycle3:', 10, 72, 40, 20)
$Combo1 = GUICtrlCreateCombo('', 60, 10, 100, 20)
GUICtrlSetData(-1, 'Func1|Func2|Func3', 'Func1')
$Combo2 = GUICtrlCreateCombo('', 60, 40, 100, 20)
GUICtrlSetData(-1, 'Func1|Func2|Func3', 'Func2')
$Combo3 = GUICtrlCreateCombo('', 60, 70, 100, 20)
GUICtrlSetData(-1, 'Func1|Func2|Func3', 'Func3')
$Button1 = GUICtrlCreateButton('Update', 10, 100, 100, 20)
GUICtrlSetOnEvent(-1, 'Update')
$Button2 = GUICtrlCreateButton('Старт', 10, 130, 100, 20)
GUICtrlSetOnEvent(-1, 'Start')
GUISetOnEvent(-3, '_Exit')
GUISetState()

Func Update()
	$Cycle1 = GUICtrlRead($Combo1)
	$Cycle2 = GUICtrlRead($Combo2)
	$Cycle3 = GUICtrlRead($Combo3)
EndFunc

Func Start()
	$Started = Not $Started
	If $Started Then
		GUICtrlSetData($Button2, 'Стоп')
	Else
		GUICtrlSetData($Button2, 'Старт')
	EndIf
EndFunc

While 1
    ToolTip('$Cycle1 = ' & $Cycle1 & @CRLF & '$Cycle2 = ' & $Cycle2 & @CRLF & '$Cycle3 = ' & $Cycle3)
	If $Started Then
		Switch $nF
			Case 1
	;~ 			Call($Cycle1)
			Case 2
	;~ 			Call($Cycle2)
			Case 3
	;~ 			Call($Cycle3)
		EndSwitch
	EndIf
WEnd

Func _Exit()
    Exit
EndFunc

Func Func1()
    ConsoleWrite("Func1()" & @CRLF)
    Sleep(3000)
    PixelSearch( 100, 441, 880, 463, 0x84B400, 0, 1)
    If Not @error Then
        $nF = 2
    Else
        $nF = 3
    EndIf
EndFunc


Func Func2()
    ConsoleWrite("Func2()" & @CRLF)
    Sleep(3000)
    MouseMove(203, 529, 5) ;
    Sleep(500)        ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    Sleep(800)         ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    $nF = 3
EndFunc


Func Func3()
    ConsoleWrite("Func3()" & @CRLF)
    Sleep(3000)
    MouseMove(30, 400, 5) ;
    Sleep(500)        ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    Sleep(800)         ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    $nF = 1
EndFunc
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
dwerf

Спасибо, вроде приблизительно похоже, буду пробовать.

И еще такой вопрос: как сделать в комбоксе надписи на русском языке, вместо
Func1,2,3 ,мне же из списка выбирать удобней ?

Заранее благодарю!
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Can сказал(а):
И еще такой вопрос: как сделать в комбоксе надписи на русском языке, вместоFunc1,2,3 ,мне же из списка выбирать удобней ?
Чего там удобней?..
Ну если нужен лишний геморрой
Код:
HotKeySet("{ESC}", "_Exit")

Opt('GUIOnEventMode', 1)

Global $nF = 1, $Started = False

Global $Func[4][2]
$Func[1][0] = 'Func1' ;Имя функции
$Func[1][1] = 'Функция1' ;показываемый текст
$Func[2][0] = 'Func2' ;Имя функции
$Func[2][1] = 'Функция2' ;показываемый текст
$Func[3][0] = 'Func3' ;Имя функции
$Func[3][1] = 'Функция3' ;показываемый текст

$Func[0][0] = 3 ;Кол-во функций

For $i = 1 To $Func[0][0] Step +1
	$Func[0][1] &= $Func[$i][1] & '|' ;Текст для ComboBox
Next
$Func[0][1] = StringTrimRight($Func[0][1], 1)

Global $Cycle1 = $Func[1][0], $Cycle2 = $Func[2][0], $Cycle3 = $Func[3][0]

GUICreate('Example', 640, 480)
GUICtrlCreateLabel('Cycle1:', 10, 12, 40, 20)
GUICtrlCreateLabel('Cycle2:', 10, 42, 40, 20)
GUICtrlCreateLabel('Cycle3:', 10, 72, 40, 20)
$Combo1 = GUICtrlCreateCombo('', 60, 10, 100, 20)
GUICtrlSetData(-1, $Func[0][1], $Func[1][1])
$Combo2 = GUICtrlCreateCombo('', 60, 40, 100, 20)
GUICtrlSetData(-1, $Func[0][1], $Func[2][1])
$Combo3 = GUICtrlCreateCombo('', 60, 70, 100, 20)
GUICtrlSetData(-1, $Func[0][1], $Func[3][1])
$Button1 = GUICtrlCreateButton('Update', 10, 100, 100, 20)
GUICtrlSetOnEvent(-1, 'Update')
$Button2 = GUICtrlCreateButton('Старт', 10, 130, 100, 20)
GUICtrlSetOnEvent(-1, 'Start')
GUISetOnEvent(-3, '_Exit')
GUISetState()

Func Update()
    $Cycle1 = Translate(GUICtrlRead($Combo1))
	$Cycle2 = Translate(GUICtrlRead($Combo2))
	$Cycle3 = Translate(GUICtrlRead($Combo3))
EndFunc

Func Translate($FuncText)
	For $i = 1 To $Func[0][0] Step +1
		If $Func[$i][1] = $FuncText Then Return $Func[$i][0]
	Next
EndFunc

Func Start()
    $Started = Not $Started
    If $Started Then
        GUICtrlSetData($Button2, 'Стоп')
    Else
        GUICtrlSetData($Button2, 'Старт')
    EndIf
EndFunc

While 1
    ToolTip('$Cycle1 = ' & $Cycle1 & @CRLF & '$Cycle2 = ' & $Cycle2 & @CRLF & '$Cycle3 = ' & $Cycle3)
    If $Started Then
        Switch $nF
            Case 1
    ;~          Call($Cycle1)
            Case 2
    ;~          Call($Cycle2)
            Case 3
    ;~          Call($Cycle3)
        EndSwitch
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc

Func Func1()
    ConsoleWrite("Func1()" & @CRLF)
    Sleep(3000)
    PixelSearch( 100, 441, 880, 463, 0x84B400, 0, 1)
    If Not @error Then
        $nF = 2
    Else
        $nF = 3
    EndIf
EndFunc


Func Func2()
    ConsoleWrite("Func2()" & @CRLF)
    Sleep(3000)
    MouseMove(203, 529, 5) ;
    Sleep(500)        ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    Sleep(800)         ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    $nF = 3
EndFunc


Func Func3()
    ConsoleWrite("Func3()" & @CRLF)
    Sleep(3000)
    MouseMove(30, 400, 5) ;
    Sleep(500)        ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    Sleep(800)         ;+
    MouseDown("left")   ;+
    Sleep(50)           ;+
    MouseUp("left")   ;+
    $nF = 1
EndFunc
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
Спасибо, мне этот вариант больше подходит:

Код:
HotKeySet("{ESC}", "_Exit")

Opt('GUIOnEventMode', 1)

Global $nF = 1, $Started = False

Global $Cycle1 = 'zamok', $Cycle2 = 'Func2', $Cycle3 = 'Func3'

GUICreate('Супер C', 640, 480)
GUICtrlCreateLabel('Поездка с базы:', 10, 12, 220, 20)
GUICtrlCreateLabel('Продажа рыбы:', 10, 42, 220, 20)
GUICtrlCreateLabel('Поездка на базу:', 10, 72, 220, 20)
GUICtrlCreateLabel('Поездка на локу:', 10, 102, 220, 20)
GUICtrlCreateLabel('Поездка на локу2:', 10, 132, 220, 20)
GUICtrlCreateLabel('Выбор наживки1:', 10, 162, 220, 20)
GUICtrlCreateLabel('Выбор наживки2:', 10, 192, 220, 20)

$Combo1 = GUICtrlCreateCombo('', 230, 10, 150, 20)
GUICtrlSetData(-1, 'zamok|Func2|Func3', 'zamok')
$Combo2 = GUICtrlCreateCombo('', 230, 40, 150, 20)
GUICtrlSetData(-1, 'zamok|Func2|Func3', 'Func2')
$Combo3 = GUICtrlCreateCombo('', 230, 70, 150, 20)
GUICtrlSetData(-1, 'zamok|Func3', 'Func3')
$Combo4 = GUICtrlCreateCombo('', 230, 100, 150, 20)
GUICtrlSetData(-1, 'zamok|Func2|Func3', 'zamok')
$Combo5 = GUICtrlCreateCombo('', 230, 130, 150, 20)
GUICtrlSetData(-1, 'zamok|Func2|Func3', 'Func2')
$Combo6 = GUICtrlCreateCombo('', 230, 160, 150, 20)
GUICtrlSetData(-1, 'zamok|Func2|Func3', 'Func3')
$Combo7 = GUICtrlCreateCombo('', 230, 190, 150, 20)
GUICtrlSetData(-1, 'zamok|Func2|Func3', 'Func3')


$Button1 = GUICtrlCreateButton('Update', 10, 230, 100, 20)
GUICtrlSetOnEvent(-1, 'Update')
$Button2 = GUICtrlCreateButton('Старт', 10, 260, 100, 20)
GUICtrlSetOnEvent(-1, 'Start')
GUISetOnEvent(-3, '_Exit')
GUISetState()

Func Update()
    $Cycle1 = GUICtrlRead($Combo1)
    $Cycle2 = GUICtrlRead($Combo2)
    $Cycle3 = GUICtrlRead($Combo3)
EndFunc

Func Start()
    $Started = Not $Started
    If $Started Then
        GUICtrlSetData($Button2, 'Стоп')
    Else
        GUICtrlSetData($Button2, 'Старт')
    EndIf
EndFunc

While 1
    
    If $Started Then
        Switch $nF
            Case 1
             Call($Cycle1)
            Case 2
              Call($Cycle2)
            Case 3
              Call($Cycle3)
        EndSwitch
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc

Func zamok()
    ConsoleWrite("zamok()" & @CRLF)
     Sleep(3000)
    MouseMove(512, 384, 5) ;
    Sleep(500)        ;+
    
    $nF = 2
EndFunc


Func Func2()
    ConsoleWrite("Func2()" & @CRLF)
    Sleep(3000)
    MouseMove(203, 529, 5) ;
    
    $nF = 3
EndFunc


Func Func3()
    ConsoleWrite("Func3()" & @CRLF)
    Sleep(3000)
    MouseMove(930, 400, 5) ;
    Sleep(500)        ;+
   
    $nF = 1
EndFunc


Только на английском прописывать в комбоксах не очень, Ваш выше вариант очень сложный, нельзя на этом примере попроще заменить надписи на русский в комбоксе? Чтобы zamok был просто на русском, и всё.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Код:
HotKeySet("{ESC}", "_Exit")

Opt('GUIOnEventMode', 1)

Global $nF = 1, $Started = False

Global $Cycle1 = 'zamok', $Cycle2 = 'Func2', $Cycle3 = 'Func3'

GUICreate('Супер C', 640, 480)
GUICtrlCreateLabel('Поездка с базы:', 10, 12, 220, 20)
GUICtrlCreateLabel('Продажа рыбы:', 10, 42, 220, 20)
GUICtrlCreateLabel('Поездка на базу:', 10, 72, 220, 20)
GUICtrlCreateLabel('Поездка на локу:', 10, 102, 220, 20)
GUICtrlCreateLabel('Поездка на локу2:', 10, 132, 220, 20)
GUICtrlCreateLabel('Выбор наживки1:', 10, 162, 220, 20)
GUICtrlCreateLabel('Выбор наживки2:', 10, 192, 220, 20)

$Combo1 = GUICtrlCreateCombo('', 230, 10, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция2|Функция3', 'Замок')
$Combo2 = GUICtrlCreateCombo('', 230, 40, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция2|Функция3', 'Функция2')
$Combo3 = GUICtrlCreateCombo('', 230, 70, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция3', 'Функция3')
$Combo4 = GUICtrlCreateCombo('', 230, 100, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция2|Функция3', 'Замок')
$Combo5 = GUICtrlCreateCombo('', 230, 130, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция2|Функция3', 'Функция2')
$Combo6 = GUICtrlCreateCombo('', 230, 160, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция2|Функция3', 'Функция3')
$Combo7 = GUICtrlCreateCombo('', 230, 190, 150, 20)
GUICtrlSetData(-1, 'Замок|Функция2|Функция3', 'Функция3')


$Button1 = GUICtrlCreateButton('Update', 10, 230, 100, 20)
GUICtrlSetOnEvent(-1, 'Update')
$Button2 = GUICtrlCreateButton('Старт', 10, 260, 100, 20)
GUICtrlSetOnEvent(-1, 'Start')
GUISetOnEvent(-3, '_Exit')
GUISetState()

Func Update()
    $Cycle1 = Translate(GUICtrlRead($Combo1))
    $Cycle2 = Translate(GUICtrlRead($Combo2))
    $Cycle3 = Translate(GUICtrlRead($Combo3))
EndFunc

Func Translate($FuncName)
	Switch $FuncName
		Case 'Замок'
			Return 'zamok'
		Case 'Функция2'
			Return 'Func2'
		Case 'Функция3'
			Return 'Func3'
	EndSwitch
EndFunc

Func Start()
    $Started = Not $Started
    If $Started Then
        GUICtrlSetData($Button2, 'Стоп')
    Else
        GUICtrlSetData($Button2, 'Старт')
    EndIf
EndFunc

While 1

    If $Started Then
        Switch $nF
            Case 1
             Call($Cycle1)
            Case 2
              Call($Cycle2)
            Case 3
              Call($Cycle3)
        EndSwitch
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc

Func zamok()
    ConsoleWrite("zamok()" & @CRLF)
     Sleep(3000)
    MouseMove(512, 384, 5) ;
    Sleep(500)        ;+

    $nF = 2
EndFunc


Func Func2()
    ConsoleWrite("Func2()" & @CRLF)
    Sleep(3000)
    MouseMove(203, 529, 5) ;

    $nF = 3
EndFunc


Func Func3()
    ConsoleWrite("Func3()" & @CRLF)
    Sleep(3000)
    MouseMove(930, 400, 5) ;
    Sleep(500)        ;+

    $nF = 1
EndFunc

Зы
Не торопитесь, а то успеете ;)
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
Спасибо, пока тему закрываю как решенной, на проверку уйдет много времени.

Если что-то не получится, спрошу, а так огромное спасибо за помощь!
 
Верх