Что нового

Два while wend

Сообщения
36
Репутация
-2
Нужно запустить два while wend (и даже больше).

Не могу понять, как это сделать.

Код:
MouseClick("left", 865, 285, 1)
Sleep(50)
MouseMove(71, 41, 0)
While 1
PixelSearch(71,41,71,41,0xF4F4F4)
If not @error Then
MouseClick("left", 970, 120, 1)
Exit
EndIf
wend


Несколько подобных с разными значениями mouseclick (и mouseclicks между ними) можно в один скрипт поместить?
 
A

at

Гость
Посмотри здесь http://autoit-script.ru/index.php/topic,6490.msg45170.html#msg45170
 
Автор
H
Сообщения
36
Репутация
-2
Уф. Чо-то мне это тяжело понять.

Суть моей программы - когда страница браузера загружается происходит пара маускликов, затем нужно опять подождать конца загрузки с помощью пикселсерч. А если таймером делать, программа же не сможет сама понять, когда следующий пикселсерч запускать.
 
Автор
H
Сообщения
36
Репутация
-2
Код:
While 1
PixelSearch(71,41,71,41,0xF4F4F4)
If not @error Then
    
MouseClick("left", 970, 120, 1)
Exit
EndIf
Sleep(200)
MouseClick("left", 726, 330, 1)
Sleep(200)
MouseClick("left", 726, 330, 1)
Sleep(200)
Send("{DEL 1}")
$word = "hohmuch"
ClipPut($Word)
Send("+{INSERT}")
Sleep(200)
Send("{ENTER}") ; хох
Sleep(50)
MouseMove(71, 41, 0)

PixelSearch(71,41,71,41,0xF4F4F4)
If not @error Then
MouseClick("left", 20, 70, 1)
Sleep(4000)
Exit
EndIf
wend

код делает бесконечную петлю из двух движений мыши. Кто-нибудь может помочь, как этот пикселсерч несколько раз в скрипте запускать? если один раз, то все работает.

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

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Используй функцию
Код:
AdlibRegister("function", $time)


Для примера:

Код:
Global $hEnable = 0

;~ код

AdlibRegister("_Start", 10)

While 1
    PixelSearch(71,41,71,41,0xF4F4F4)
    If not @error Then 
        $hEnable = 1
    Else
        $hEnable = 0
    EndIf
Wend


Func _Start()
    If $hEnable = 1 Then
        ;~ Код выполняющий какое либо действие
    EndIf
EndFunc
 
Автор
H
Сообщения
36
Репутация
-2
Код:
Global $hEnable = 0
MouseClick("left", 545, 385, 1)
Sleep(200)
MouseClick("left", 960, 120, 1)
Sleep(500)
MouseClick("left", 865, 285, 1)
Sleep(50)
MouseMove(71, 41, 0)

AdlibRegister("_Start", 10)
While 1
    PixelSearch(71,41,71,41,0xF4F4F4)
    If not @error Then 
        $hEnable = 1
    Else
        $hEnable = 0
    EndIf
Wend

Func _Start()
    If $hEnable = 1 Then
		MouseClick("left", 970, 120, 1) ; стала бесконечно повторяться эта строчка
    EndIf
EndFunc
Sleep(200)
MouseClick("left", 726, 330, 1)
Sleep(200)
MouseClick("left", 726, 330, 1)
Sleep(200)
Send("{DEL 1}")
$word = "hohmuch"
ClipPut($Word)
Send("+{INSERT}")
Sleep(200)
Send("{ENTER}") ; хох
Sleep(50)
MouseMove(71, 41, 0)

AdlibRegister("_Start", 10)
While 1
    PixelSearch(71,41,71,41,0xF4F4F4)
    If not @error Then 
        $hEnable = 1
    Else
        $hEnable = 0
    EndIf
Wend

Func _Start1()
    If $hEnable = 1 Then
MouseClick("left", 20, 70, 1)
    EndIf
EndFunc

Проблема.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
hohmuch [?]
подобные посты неприемлемы. что значит проблема? какая проблема? какую ошибку выдает? в дальнейшем последуют санкции в виде закрытия тем, имей в виду.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
hohmuch где в 1 цикл а где 2 (в первом посту) ? А то как-то не пойму...
 
Автор
H
Сообщения
36
Репутация
-2
Kaster
Код:
MouseClick("left", 970, 120, 1) ; стала бесконечно повторяться эта строчка



Zaramot, если цикл это while wend, то он один, но мне нужно повторить его много раз за скрипт, чередуя разнообразными маускликами.
Вот этот

Код:
While 1
PixelSearch(71,41,71,41,0xF4F4F4)
If not @error Then
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Что мешает описать все в одном While без AddLib просто описывая свои множественные клики с различных условиях?
 
A

at

Гость
Посмотри еще раз здесь: http://autoit-script.ru/index.php?topic=6490.msg45284#msg45284 Попробуй применить к своему скрипту.

Код:
AdlibRegister("_Cycle001", 60000) ; время таймера можешь выставлять любое
AdlibRegister("_Cycle002", 10000)
AdlibRegister("_Cycle003", 1000)
AdlibRegister("_Cycle004", 50000)
AdlibRegister("_Cycle005", 1000)
AdlibRegister("_Cycle006", 2000)

While 1
    Sleep(1000)
WEnd

Func _Cycle001()
EndFunc
   
Func _Cycle002()
EndFunc

Func _Cycle003()
EndFunc

Func _Cycle004()
EndFunc

Func _Cycle005()
EndFunc

Func _Cycle006()
EndFunc
 
Автор
H
Сообщения
36
Репутация
-2
Belfigor, я бы и рад сделать все как можно проще, но не знаю как. Я так понимаю, что если один while wend будет, то я не смогу второй раз найти нужный цвет.

at, если делать код с задержками, то while wend не нужны. Суть кода в том, чтобы он сам понимал, когда веб-страница Chrome загрузится и продолжал щелкать в нужных местах. То есть тот же скрипт с большими показателями Sleep уже есть, но хотелось бы его заменить поиском пиксела, чтобы программа знала, когда страничка загружена.
 
Верх