Что нового

Меню ввода значений

saloma

Новичок
Сообщения
19
Репутация
0
Добрый вечер. Помогите допилить скрипт до ума
На данный момент скрипт тыкает на координаты монитора, которые вносятся руками. Тыкает 10000 раз, всегда начиная с 0000
Хотелось бы реализовать более удобный ввод координат точек.Мол вопрос ввести координаты? если нет, тыкает по введенным координатам, если да, поочередно натыкиваешь 10 координат которые записываются внутрь.
А потом следующий вопрос, с какого числа начать перебор,например я хочу не с 0000, а хочу с 2500
Буду очень благодарен за помощь
Код:
HotKeySet("{Esc}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
Sleep(10000)
For $i = 0000 To 9999
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(1000)
  Send("e 2")
  For $j = 0 To 3
	 Sleep(350)
         MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(350)
    Next
Next
Func MyExit()
    Exit
EndFunc
 
Автор
S

saloma

Новичок
Сообщения
19
Репутация
0
saloma сказал(а):
Добрый вечер. Помогите допилить скрипт до ума
На данный момент скрипт тыкает на координаты монитора, которые вносятся руками. Тыкает 10000 раз, всегда начиная с 0000
Хотелось бы реализовать более удобный ввод координат точек.Мол вопрос ввести координаты? если нет, тыкает по введенным координатам, если да, поочередно натыкиваешь 10 координат которые записываются внутрь.
А потом следующий вопрос, с какого числа начать перебор,например я хочу не с 0000, а хочу с 2500
Буду очень благодарен за помощь
Код:
HotKeySet("{Esc}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
Sleep(10000)
For $i = 0000 To 9999
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(1000)
  Send("e 2")
  For $j = 0 To 3
	 Sleep(350)
         MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(350)
    Next
Next
Func MyExit()
    Exit
EndFunc

Как оказалось ввод координат уже не нужен,а ввод переменной я сделал сам, вроде разобрался
теперь выглядит так
Код:
HotKeySet("{F1}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
$var = InputBox("Введите переменную","Введите переменную")
Sleep(5000)
For $i = $var To 9999
   Sleep(100)
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(800)
  Send("eeeee")
   Sleep(400)
  For $j = 0 To 3
	            MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(100)
 Next
 Sleep(100)
Next
Func MyExit()
    Exit
EndFunc
Но возникла новая проблема. Устал мучатся с задержками, хочу их убрать. Как сделать проверку после эмуляции нажатия кнопки "Е" по цвету.По нажатию "Е" появляется форма, Определенного цвета. Как сделать так, что бы скрипт ждал,пока она появится, а только потом продолжал выполнение


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

Жаль что никто не помог, когда это нужно было срочно
если кому нужно, вот решение
Код:
HotKeySet("{F1}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
$num = InputBox("Введите переменную","Введите переменную")
 $i = 0
 $col = 17895485
Sleep(5000)
For $i = $num To 9999
    $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
	Sleep(100)
  Send("eeeee")
Do
      $cols = PixelGetColor(200,200)
Until $col = $cols
  For $j = 0 To 3
	            MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(100)
 Next
 Sleep(100)
Next
Func MyExit()
    Exit
EndFunc
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Вот, что я наваял :smile: (по первому посту)
Код:
#include <GUIConstantsEx.au3>
#include <Misc.au3>

; Script Start - Add your code below here
HotKeySet("{Esc}", "MyExit")
Global $hForm = GUICreate('')
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
Dim $NewArray[10][2]


If MsgBox(32+4,'Внимание !','Вести новые координаты ?')=7 Then
    Start($array)
Else
	NewCoord()
	Start($NewArray)
EndIf

;Sleep(10000)
;Click($Array,0000)290

Func Start($ArrayToGo)
$hMainGui=GUICreate('',335,45)
GUICtrlCreateLabel('Начать перебор с ',5,10,150,20)
GUICtrlSetFont(-1,12,600)
$Input=GUICtrlCreateInput('0000',160,10,60,20)
GUICtrlSetFont(-1,12,600)
GUICtrlCreateLabel('числа',230,10,50,20)
GUICtrlSetFont(-1,12,600)
$Go=GUICtrlCreateButton('Go',290,5,40,35)
GUICtrlSetFont(-1,12,600)
GUISetState(@SW_SHOW,$hMainGui)

While 1
$msg = GUIGetMsg()
	Select
		Case $msg= $GUI_EVENT_CLOSE
			Exit

		Case $msg=$Go
		   $Start=	StringFormat('%04d',GuiCtrlRead($Input))
		   GUISetState(@SW_HIDE,$hMainGui)
		   Click($ArrayToGo,$Start)

	EndSelect
WEnd



EndFunc

Func Click($Array,$Start)

For $i = $Start To 9999
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(1000)
  Send("e 2")
  For $j = 0 To 3
     Sleep(350)
         MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
    Sleep(350)
    Next
Next

EndFunc


Func NewCoord()

	Local $i = 0
    Do

        If _IsPressed("01") Then

            ;   Цикл ожидания, пока клавиша не будет отпущена.
            While _IsPressed("01")
                Sleep(250)
            WEnd
            $Coord = MouseGetPos()

             $NewArray[$i][0]=$Coord[0]
             $NewArray[$i][1]=$Coord[1]
			 $i += 1
        EndIf


    Until $i = 10
MsgBox(64,'Внимание !','Координаты сохранены !',1)
EndFunc




Func MyExit()
    Exit
EndFunc
 
Автор
S

saloma

Новичок
Сообщения
19
Репутация
0
ra4o сказал(а):
Вот, что я наваял :smile: (по первому посту)
Код:
#include <GUIConstantsEx.au3>
#include <Misc.au3>

; Script Start - Add your code below here
HotKeySet("{Esc}", "MyExit")
Global $hForm = GUICreate('')
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
Dim $NewArray[10][2]


If MsgBox(32+4,'Внимание !','Вести новые координаты ?')=7 Then
    Start($array)
Else
	NewCoord()
	Start($NewArray)
EndIf

;Sleep(10000)
;Click($Array,0000)290

Func Start($ArrayToGo)
$hMainGui=GUICreate('',335,45)
GUICtrlCreateLabel('Начать перебор с ',5,10,150,20)
GUICtrlSetFont(-1,12,600)
$Input=GUICtrlCreateInput('0000',160,10,60,20)
GUICtrlSetFont(-1,12,600)
GUICtrlCreateLabel('числа',230,10,50,20)
GUICtrlSetFont(-1,12,600)
$Go=GUICtrlCreateButton('Go',290,5,40,35)
GUICtrlSetFont(-1,12,600)
GUISetState(@SW_SHOW,$hMainGui)

While 1
$msg = GUIGetMsg()
	Select
		Case $msg= $GUI_EVENT_CLOSE
			Exit

		Case $msg=$Go
		   $Start=	StringFormat('%04d',GuiCtrlRead($Input))
		   GUISetState(@SW_HIDE,$hMainGui)
		   Click($ArrayToGo,$Start)

	EndSelect
WEnd



EndFunc

Func Click($Array,$Start)

For $i = $Start To 9999
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(1000)
  Send("e 2")
  For $j = 0 To 3
     Sleep(350)
         MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
    Sleep(350)
    Next
Next

EndFunc


Func NewCoord()

	Local $i = 0
    Do

        If _IsPressed("01") Then

            ;   Цикл ожидания, пока клавиша не будет отпущена.
            While _IsPressed("01")
                Sleep(250)
            WEnd
            $Coord = MouseGetPos()

             $NewArray[$i][0]=$Coord[0]
             $NewArray[$i][1]=$Coord[1]
			 $i += 1
        EndIf


    Until $i = 10
MsgBox(64,'Внимание !','Координаты сохранены !',1)
EndFunc




Func MyExit()
    Exit
EndFunc
спасибо, добавил


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

saloma сказал(а):
saloma сказал(а):
Добрый вечер. Помогите допилить скрипт до ума
На данный момент скрипт тыкает на координаты монитора, которые вносятся руками. Тыкает 10000 раз, всегда начиная с 0000
Хотелось бы реализовать более удобный ввод координат точек.Мол вопрос ввести координаты? если нет, тыкает по введенным координатам, если да, поочередно натыкиваешь 10 координат которые записываются внутрь.
А потом следующий вопрос, с какого числа начать перебор,например я хочу не с 0000, а хочу с 2500
Буду очень благодарен за помощь
Код:
HotKeySet("{Esc}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
Sleep(10000)
For $i = 0000 To 9999
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(1000)
  Send("e 2")
  For $j = 0 To 3
	 Sleep(350)
         MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(350)
    Next
Next
Func MyExit()
    Exit
EndFunc

Как оказалось ввод координат уже не нужен,а ввод переменной я сделал сам, вроде разобрался
теперь выглядит так
Код:
HotKeySet("{F1}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
$var = InputBox("Введите переменную","Введите переменную")
Sleep(5000)
For $i = $var To 9999
   Sleep(100)
  $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
  Sleep(800)
  Send("eeeee")
   Sleep(400)
  For $j = 0 To 3
	            MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(100)
 Next
 Sleep(100)
Next
Func MyExit()
    Exit
EndFunc
Но возникла новая проблема. Устал мучатся с задержками, хочу их убрать. Как сделать проверку после эмуляции нажатия кнопки "Е" по цвету.По нажатию "Е" появляется форма, определенного цвета. Как сделать так, что бы скрипт ждал,пока она появится, а только потом продолжал выполнение


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

Жаль что никто не помог, когда это нужно было срочно
если кому нужно, вот решение
Код:
HotKeySet("{F1}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
$num = InputBox("Введите переменную","Введите переменную")
 $i = 0
 $col = 17895485
Sleep(5000)
For $i = $num To 9999
    $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
	Sleep(100)
  Send("eeeee")
Do
      $cols = PixelGetColor(200,200)
Until $col = $cols
  For $j = 0 To 3
	            MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
	Sleep(100)
 Next
 Sleep(100)
Next
Func MyExit()
    Exit
EndFunc




Опять появилась загвоздка.
Я думал, что цвет формы, появляющейся по нажатию на "е" статичен, но она имеет адский блюр(пример на картинке)
Какие есть способы решения?
8a053b5283.jpg
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Модератор.
 

Ksaan

Знающий
Сообщения
207
Репутация
15
Код:
;~ Do
;~ 	$cols = PixelGetColor(200,200)
;~ Until $col = $cols

While 1
	$cols = PixelSearch(0, 0, 20, 20, $col)
	If Not @error Then ExitLoop
	Sleep(100)
WEnd
 
Автор
S

saloma

Новичок
Сообщения
19
Репутация
0
Ksaan сказал(а):
Код:
;~ Do
;~ 	$cols = PixelGetColor(200,200)
;~ Until $col = $cols

While 1
	$cols = PixelSearch(0, 0, 20, 20, $col)
	If Not @error Then ExitLoop
	Sleep(100)
WEnd
Cпасибо


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

Добрый день, не могу понять почему все работает не так,как должно
В моем понимании, должно происходить примерно так:
Начинается цикл, Нажимается буква "е",Ищется определенного цвета пиксель в области. Если он не находится,опять нажимается "е" и идет поиск пикселя.Если находится, происходит клик по 4 точкам и опять нажимается "е" с проверкой цвета.
Как работает по факту:
На условие определение цвета ему пофиг, вводит цифры в любом случае, даже не проверяя. В чем проблема:?
Код:
HotKeySet("{F1}", "MyExit")
Dim $array[10][2] = [[927,670],[896,608],[960,607],[1024,607],[895,544],[960,544],[1024,544],[896,477],[960,477],[1024,477]]
$num = InputBox("Введите переменную","Введите переменную")
 $i = 0
 $col = 17895485
Sleep(5000)
For $i = $num To 9999
    $idx = StringSplit(StringFormat("%.4d", $i), "", 2)
    Sleep(100)  
While 1
Send("eeeee")
    $cols = PixelSearch(0, 0, 20, 20, $col)
    If Not @error Then ExitLoop
    Sleep(100)
WEnd
  For $j = 0 To 3
                MouseClick("", $array[$idx[$j]][0], $array[$idx[$j]][1],1,2)
    Sleep(100)
 Next
 Sleep(100)
Next
Func MyExit()
    Exit
EndFunc
 
Верх