Что нового

[Элементы GUI] Внесение изменений в скрипт с помощью интерфейса GUI

gecha

Новичок
Сообщения
7
Репутация
0
Приветствую уважаемые форумчане ! Всех с прошедшими праздниками !
Заранее дико извеняюсь если подобная тема все таки существует . Я знаю что такое поиск просто разные вариации данного вопроса не дали ни каких результатов :( . Я не отрицаю что может быть суть изложена не совсем правильно но в AutoIt-е я "пешка" всего пару дней как учусь собственно поэтому и прошу помощи.
А суть вопроса в следующем :
есть такой скрипт
Код:
$p1 = PixelSearch( 10, 70, 1000, 740, 0xD79A54) 
    If @error Then $p1 = @error
    $p2 = PixelSearch( 10, 70, 1000, 740, 0xDB8742, 0, 1)
    If @error Then $p2 = @error
    $p3 = PixelSearch( 10, 70, 1000, 740, 0xFFEBAC, 0, 1)
    If @error Then $p3 = @error
       
    If $p1 <> 1 And $p2 <> 1 And $p3 <> 1 Then
        MouseClick("left", $p1[0], $p1[1], 1, 0)
        MouseClick("left", $p2[0], $p2[1], 1, 0)
		MouseClick("left", $p3[0], $p3[1], 1, 0)
    ElseIf $p1 <> 1 Then
        MouseClick("left", $p1[0], $p1[1], 1, 0)
    ElseIf $p2 <> 1 Then
        MouseClick("left", $p2[0], $p2[1], 1, 0)
    ElseIf $p3 <> 1 Then
        MouseClick("left", $p3[0], $p3[1], 1, 0)

для одновременного поиска 3 разных цветов.
Вопрос : можно ли создать интерфейс GUI таким образам чтобы при нажатии кнопки "1" выбираем любой цвет на экране , наводим на него курсор , нажимаем Enter и этот цвет сохранялся в $p1 = PixelSearch( 10, 70, 1000, 740, 0:rofl:79A54) при нажатии кнопки 2 в следующую строку функции PixelSearch и т.д. в плоть до выбора 5 разных цветов для поиска одновременно.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Код:
#include <GuiConstantsEx.au3>
HotKeySet("{ESC}", "_Exit")
Global $jpos[2] = [0, 0], $b[6][4] = [[5]]

$hGui = GUICreate(" ", 230, 220)
$x = 30
For $i = 1 To $b[0][0]
	$x += 30
	$b[$i][0] = GUICtrlCreateButton("Цвет " & $i, 5, $x, 100, 22)
	GUICtrlSetState(-1, $GUI_DISABLE)
Next
GUICtrlSetState($b[1][0], $GUI_ENABLE)
$x = 30
For $i = 1 To $b[0][0]
	$x += 30
	$b[$i][1] = GUICtrlCreateButton("Старт " & $i, 5, 5, 100, 22)
	GUICtrlSetState(-1, $GUI_DISABLE)
Next
$x = 31
For $i = 1 To $b[0][0]
	$x += 30
	$b[$i][2] = GUICtrlCreateInput("0", 110, $x, 63, 20)
	$b[$i][3] = GUICtrlCreateLabel("", 170, $x, 20, 20)
Next
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $b[1][0] To $b[$b[0][0]][0]
			$j = $nMsg - $b[1][0] + 1
			; MsgBox(0, 'Check', $j &@LF& $nMsg, 0, $hGui)
			_GetColor($j)
		Case -3
			Exit

		Case $b[1][1]
			GUISetState(@SW_HIDE)

			While 1
				$p1 = PixelSearch(10, 70, 1000, 740, $color, 0, 1)
				If @error Then $p1 = @error

				If $p1 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					Sleep(3000)
				ElseIf $p1 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					Sleep(3000)
				EndIf
			WEnd
			Exit ; Выход!

		Case $b[2][1]
			GUISetState(@SW_HIDE)

			While 1
				$p1 = PixelSearch(10, 70, 1000, 740, $color, 0, 1)
				If @error Then $p1 = @error
				$p2 = PixelSearch(10, 70, 1000, 740, $color1, 0, 1)
				If @error Then $p2 = @error

				If $p1 <> 1 And $p2 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p1 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					Sleep(3000)
				ElseIf $p2 <> 1 Then
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				EndIf
			WEnd

			Exit ; Выход!

		Case $b[3][1]
			GUISetState(@SW_HIDE)

			While 1
				$p1 = PixelSearch(10, 70, 1000, 740, $color, 0, 1)
				If @error Then $p1 = @error
				$p2 = PixelSearch(10, 70, 1000, 740, $color1, 0, 1)
				If @error Then $p2 = @error
				$p3 = PixelSearch(10, 70, 1000, 740, $color2, 0, 1)
				If @error Then $p3 = @error

				If $p1 <> 1 And $p2 <> 1 And $p3 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p1 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					Sleep(3000)
				ElseIf $p2 <> 1 Then
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p3 <> 1 Then
					MouseClick("left", $p3[0], $p3[1], 1, 0)
					Sleep(3000)
				EndIf
			WEnd

			Exit ; Выход!

		Case $b[4][1]
			GUISetState(@SW_HIDE)

			While 1
				$p1 = PixelSearch(10, 70, 1000, 740, $color, 0, 1)
				If @error Then $p1 = @error
				$p2 = PixelSearch(10, 70, 1000, 740, $color1, 0, 1)
				If @error Then $p2 = @error
				$p3 = PixelSearch(10, 70, 1000, 740, $color2, 0, 1)
				If @error Then $p3 = @error
				$p4 = PixelSearch(10, 70, 1000, 740, $color3, 0, 1)
				If @error Then $p4 = @error

				If $p1 <> 1 And $p2 <> 1 And $p3 <> 1 And $p4 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p1 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					Sleep(3000)
				ElseIf $p2 <> 1 Then
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p3 <> 1 Then
					MouseClick("left", $p3[0], $p3[1], 1, 0)
					Sleep(3000)
				ElseIf $p4 <> 1 Then
					MouseClick("left", $p4[0], $p4[1], 1, 0)
					Sleep(3000)
				EndIf
			WEnd

			Exit ; Выход!

		Case $b[5][1]
			GUISetState(@SW_HIDE)

			While 1
				$p1 = PixelSearch(10, 70, 1000, 740, $color, 0, 1)
				If @error Then $p1 = @error
				$p2 = PixelSearch(10, 70, 1000, 740, $color1, 0, 1)
				If @error Then $p2 = @error
				$p3 = PixelSearch(10, 70, 1000, 740, $color2, 0, 1)
				If @error Then $p3 = @error
				$p4 = PixelSearch(10, 70, 1000, 740, $color3, 0, 1)
				If @error Then $p4 = @error
				$p5 = PixelSearch(10, 70, 1000, 740, $color4, 0, 1)
				If @error Then $p5 = @error

				If $p1 <> 1 And $p2 <> 1 And $p3 <> 1 And $p4 <> 1 And $p5 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p1 <> 1 Then
					MouseClick("left", $p1[0], $p1[1], 1, 0)
					Sleep(3000)
				ElseIf $p2 <> 1 Then
					MouseClick("left", $p2[0], $p2[1], 1, 0)
					Sleep(3000)
				ElseIf $p3 <> 1 Then
					MouseClick("left", $p3[0], $p3[1], 1, 0)
					Sleep(3000)
				ElseIf $p4 <> 1 Then
					MouseClick("left", $p4[0], $p4[1], 1, 0)
					Sleep(3000)
				ElseIf $p5 <> 1 Then
					MouseClick("left", $p5[0], $p5[1], 1, 0)
					Sleep(3000)
				EndIf

			WEnd

			Exit ; Выход!

	EndSwitch
WEnd

Func _GetColor($j)
	GUISetState(@SW_HIDE)
	If $j < 5 Then GUICtrlSetState($b[$j + 1][0], $GUI_ENABLE)
	GUICtrlSetState($b[$j][1], $GUI_ENABLE)
	MsgBox(4096, " ", "Наведите курсор мыши на нужный пиксель и нажмите Enter")
	$jpos = MouseGetPos() ; Запоминаем текущщие координаты мыши в переменную $pos
	$color = PixelGetColor($jpos[0], $jpos[1]) ; Запоминает цвет пикселя, ориентируясь на координаты из $pos
	GUICtrlSetData($b[$j][2], '0x' & Hex($color,6))
	GUICtrlSetBkColor($b[$j][3], $color)
	GUISetState()
EndFunc   ;==>_GetColor

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
G

gecha

Новичок
Сообщения
7
Репутация
0
AZJIO к сожалению ваш пример не работает .
После нажатия на кнопку "старт" вылетает ошибка
Код:
$p1 = PixelSearch(10, 70, 1000, 740, $color, 0, 1)
$p1 = PixelSearch(10, 70, 1000, 740, ^ERROR
Error: Variable used without being declared
Не зависимо сколько выбрано цветов.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
gecha
После нажатия на кнопку "старт" вылетает ошибка
$color переделана в массив. Я не стал всё переделывать, просто показал пример как делать компактно через цикл и через функцию. У меня всё равно твой скрипт не работал и я не понимаю его назначение, все 5 кнопок старта создаются в одном и том же месте. Я не ставил задачу создать рабочий скрипт, и у меня нет времени на помощь, я просто подал идею, а вы как хотите, игнорировать или принять.
 
Автор
G

gecha

Новичок
Сообщения
7
Репутация
0
AZJIO Если бы мои знания в этой среде были бы на уровне ваших я бы не просил помощи, а так мне пока еще довольно сложно разобраться в недоделоном скрипте , тем более я попросил по возможности прокоментировать ! Но все равно спасибо хоть за что то !
Насчет появления кнопок "старт" в одном месте - я просто не знаю как сделать одну но что бы она активировала определенный участок скрипта в зависимости сколько цветов выбрано !
 
Верх