День добрый!
Вопрос по рабочим столам в Win10.
Подскажите пожалуйста, а можно эмулировать в кликере перетаскивание окна на рабочий стол 2,3 и тп?
set #ld linedelay
set linedelay 40
//
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
set #tw 4 // в какой стол переместить
set workwindow 394820 // окно, которое будем перемещать
//
showwindow workwindow
if #cw < #tw
set #a 2
else
set #a 1
end_if
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
wait 350
sendex_down ~{F10}
sendex_up ~{F10}
wait 15
sendex {Down}
sendex {Down}
sendex {Down}
sendex {Right}
repeat #tw - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
set linedelay #ld
end_script
set #ld linedelay
set linedelay 40
//
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
set #tw 4 // в какой стол переместить
set workwindow 394820 // окно, которое будем перемещать
//
showwindow workwindow
if #cw < #tw
set #a 2
else
set #a 1
end_if
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
wait 350
sendex_down ~{F10}
sendex_up ~{F10}
wait 15
sendex {Down}
sendex {Down}
sendex {Down}
sendex {Right}
repeat #tw - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
set linedelay #ld
end_script
set #ld linedelay
set linedelay 40
//
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
set #tw 4 // в какой стол переместить
set workwindow 394820 // окно, которое будем перемещать
//
showwindow workwindow
if #cw < #tw
set #a 2
else
set #a 1
end_if
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
wait 350
sendex_down ~{F10}
sendex_up ~{F10}
wait 15
sendex {Down}
sendex {Down}
sendex {Down}
sendex {Right}
repeat #tw - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
set linedelay #ld
end_script
while hour != 10 or min != 0 // ждать когда будет 10 часов 0 минут
wait 10
end_while
// дальше скрипт
end_script
while hour != 10 or min != 0 // ждать когда будет 10 часов 0 минут
wait 10
end_while
// дальше скрипт
end_script
подскажите, а есть ограничения на команды wait ? ну например мне нужно 3 часа ожидания... или лучше такие промежутки заводить через таймер?
Wait 3h
Wait 3h
В описании на вики такой формат указан, но он, оказывается, и правда не работает. Значит в следующей версии по идее исправят.
set #ld linedelay
set linedelay 40
//
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
set #tw 4 // в какой стол переместить
set workwindow 394820 // окно, которое будем перемещать
//
showwindow workwindow
if #cw < #tw
set #a 2
else
set #a 1
end_if
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
wait 350
sendex_down ~{F10}
sendex_up ~{F10}
wait 15
sendex {Down}
sendex {Down}
sendex {Down}
sendex {Right}
repeat #tw - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
set linedelay #ld
end_script
call vDesktop 1 2 5116634
end_script
proc vDesktop #iz #v #handle
set linedelay 0
set workwindow #handle
showwindow workwindow
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
if #iz < #v
set #a 2
else
set #a 1
end_if
wait 400
sendex_down ~{F10}
sendex_up ~{F10}
sendex {Down}
sendex {Down}
sendex {Down}
sendex {Right}
repeat #v - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
end_proc
call vDesktop 1 2 5116634
end_script
proc vDesktop #iz #v #handle
set linedelay 0
set workwindow #handle
showwindow workwindow
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
if #iz < #v
set #a 2
else
set #a 1
end_if
wait 400
sendex_down ~{F10}
sendex_up ~{F10}
sendex {Down}
sendex {Down}
sendex {Down}
sendex {Right}
repeat #v - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
end_proc
end_proc
Похоже со времен написания wait, символ h был зарезервирован. Скорее всего для указания шестнадцатеричного формата чисел. И wait так невзначай отвалился...
помогите пожалуйста с циклом...
set #d findcolor (1164, 740 1164, 742 1 1 (3798088-4387912) %arr 2 -1 3 abs)
if #d > 0
wait 2000
else
log Цвет не найден!
end_if
set #d findcolor (1164, 740 1164, 742 1 1 (3798088-4387912) %arr 2 -1 3 abs)
if #d > 0
wait 2000
set #d findcolor (1164, 740 1164, 742 1 1 (3798088-4387912) %arr 2 -1 3 abs)
while #d > 0
set #d findcolor (1164, 740 1164, 742 1 1 (3798088-4387912) %arr 2 -1 3 abs)
wait 2000
if #d = 0
log Цвет не найден!
end_if
end_while
Спасибо!
тут разобрался.
еще пару вопросов:
а команда "set #d findcolor" работает в перекрытом окне?
у меня одного не возвращает курсор после клика? (в настройках стоит галка, возвращать)
• set workwindow 6573546
• set workwindow windowfromcursor
• set workwindow findwindow (Блокнот)
set #handle findwindow ("Manager") // найти окно
set workwindow #handle // сделать его рабочим
set windowpos 3383, 515
wait 2000
kleft 3815, 560 abs
wait 8m
set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs)
while #d > 0
set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs)
wait 10000
if #d = 0
log Цвет не найден!
end_if
end_while
end_script
помогите пожалуйста с циклом, для меня слишком сложное решение...
пример:
есть 6 точек координат(условий), по ним нужно проверить соответствие цвета, если на 1 из них не найден цвет сделать клик, но клин нужен только внутри каждого условия отдельный и так зациклить пока не будет все 6 не соответствий. клик нужно делать только 1 раз после первого отказа в цвете.
set delimiter ' '
init_arr %a (1) "1, 2 3, 4" "5, 6 7, 8" "9, 10 11, 12" "13, 14 15, 16" "17, 18 19, 20" "21, 22 23, 24"
while size(%a[1]) > 0
for #i 1 size(%a[1])
set $a %a[1 #i]
set #a findcolor ($a 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #a = 0
kleft x y
delete_array %a #i
break
end_if
end_for
end_while
end_script
ну либо более простой вариант(азы так сказать)
while_not 450, 160 255 and 480, 160 255 // повторяем цикл пока во всех точкаx 1 и 2 не получим желаемый цвет
//точка 1 цвет известен но он нам не подходит, нужно сделать клик
if 450, 160 16777215 //если есть цвет координаты в точке 1 и цвет X, Y Color
left 450, 160 //куда нужно кликнуть в точке 1
wait 100
end_if
wait 100
//точка 2, цвет в данный момент не известен, но знаем кокой он должен получится в итоге. Делаем до тех пор пока не будет нужный цвет
if_not 480, 160 255 //пока не появился нужный цвет в точке 2
wait 100
left 480, 160 //куда нужно кликнуть в точке 2 что бы получить нужный цвет
end_if
// и т.д.
end_while
end_script
спасибо большое!
во втором примере понятно, где проставлять клик под каждый findcolor , а в первом примере не догоняю, где привязывать каждый поиск цвета под свой клик.
у меня еще почему-то перестал работать if, просто проскакивает действие внутри ...
wait 2000
get mouse_pos #x0 #y0 // позиция до клика
kleft 3815, 560 abs // клик
move #x0 #y0 // возврат
wait 8m
set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs)
while #d > 0
set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs)
wait 10000
if #d = 0
//тут действие
end_if
end_while
set delimiter ' '
init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 550 560 580 // координата X в т1, координата X в т2
init_arr %y 180 180 180 // координата Y в т1, координата Y в т2
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие
move %x[#i] %y[#i] // навести мышку на точку(выполнить действие)
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
log #proverka // отоброзили в лог состояния счетчика
end_if // конец условия
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
Ну на время тестов скриптов дал бы вам совет особенно если работаете с циклами это биндить кнопки в пилоте или при помощи плагина https://forum.uokit.com/index.php?act=Attach&type=post&id=2465. Кидать(распаковать) в папку Plugins, которая рядом с пилот должна быть создана. Более полную информацию можете посмотреть https://forum.uokit.com/index.php?showtopic=68111&hl=KB\.GetKeyStateByCode.
//УПРАВЛЕНИЕ СКРИПТОМ
if KB.GetKeyStateByCode(83) = 1 // S - пауза
wait 1s
while_not KB.GetKeyStateByCode(83) = 1 // S -- отпустить паузу
wait 100
end_while
end_if
if KB.GetKeyStateByCode(69) = 1 // E - выключить скрипт
end_script
end_if
//УПРАВЛЕНИЕ СКРИПТОМ
if KB.GetKeyStateByCode(83) = 1 // S - пауза
wait 1s
while_not KB.GetKeyStateByCode(83) = 1 // S -- отпустить паузу
wait 100
end_while
end_if
if KB.GetKeyStateByCode(69) = 1 // E - выключить скрипт
end_script
end_if
set delimiter ' '
init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 550 560 580 // координата X в т1, координата X в т2
init_arr %y 180 180 180 // координата Y в т1, координата Y в т2
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие
move %x[#i] %y[#i] // навести мышку на точку(выполнить действие)
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
log #proverka // отоброзили в лог состояния счетчика
end_if // конец условия
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
set delimiter ' '
init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 550 560 580 // координата X в т1, координата X в т2
init_arr %y 180 180 180 // координата Y в т1, координата Y в т2
init_arr %xx 111 222 333 // координаты кликов X
init_arr %yy 11 22 33 // координаты кликов Y
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие
move %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие)
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
log #proverka // отоброзили в лог состояния счетчика
end_if // конец условия
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
set delimiter ' '
init_arr %a (1) "1, 2 3, 4" "5, 6 7, 8" "9, 10 11, 12" "13, 14 15, 16" "17, 18 19, 20" "21, 22 23, 24"
init_arr %b (1) "1 2" "3 4" "5 6" "7 8" "9 10" "11 12" // координаты для клика
while size(%a[1]) > 0
for #i 1 size(%a[1])
set $a %a[1 #i]
set #a findcolor ($a 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #a = 0
set $b %b[1 #i]
kleft $b
delete_array %a #i
delete_array %b #i
break
end_if
end_for
end_while
end_script
спасибо огромное всем за помощь!
пс. подскажите, у меня пилот при составление координат цепляется к размеру кнопки, а не всего окна программы, но у меня там 15 кнопок и все одинакового размера... можно, как-то акцентировать на все окно? или только через "abs"?
set delimiter ' '
init_arr %a (1) "1, 2 3, 4" "5, 6 7, 8" "9, 10 11, 12" "13, 14 15, 16" "17, 18 19, 20" "21, 22 23, 24"
init_arr %b (1) "1 2" "3 4" "5 6" "7 8" "9 10" "11 12" // координаты для клика
while size(%a[1]) > 0
for #i 1 size(%a[1])
set $a %a[1 #i]
set #a findcolor ($a 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #a = 0
set $b %b[1 #i]
kleft $b
delete_array %a #i
delete_array %b #i
break
end_if
end_for
end_while
end_script
set delimiter ' '
init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 550 560 580 // координата X в т1, координата X в т2
init_arr %y 180 180 180 // координата Y в т1, координата Y в т2
init_arr %xx 111 222 333 // координаты кликов X
init_arr %yy 11 22 33 // координаты кликов Y
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие
move %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие)
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
log #proverka // отоброзили в лог состояния счетчика
end_if // конец условия
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 3 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
set #handle findwindow ("Manager") // найти окно
set workwindow #handle // сделать его рабочим
set windowpos 1, 515
set delimiter ' '
init_arr %color 4387912 4387912 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 429 429 // координата X в т1, координата X в т2
init_arr %y 560 590 // координата Y в т1, координата Y в т2
init_arr %xx 429 429 // координаты кликов X
init_arr %yy 620 650 // координаты кликов Y
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i]
move %xx[#i] %yy[#i]
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
kleft %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие)
end_if // конец условия
if #proverka >= 2 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 2 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
set #handle findwindow ("Manager") // найти окно
set workwindow #handle // сделать его рабочим
set windowpos 1, 515
set delimiter ' '
init_arr %color 4387912 4387912 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 429 429 // координата X в т1, координата X в т2
init_arr %y 560 590 // координата Y в т1, координата Y в т2
init_arr %xx 429 429 // координаты кликов X
init_arr %yy 620 650 // координаты кликов Y
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i]
move %xx[#i] %yy[#i]
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
kleft %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие)
end_if // конец условия
if #proverka >= 2 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 2 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
set #handle findwindow ("Manager") // найти окно
set workwindow #handle // сделать его рабочим
set windowpos 1, 515
set delimiter ' '
init_arr %color 4387912 4387912 // цвет в точке 1, цвет в точке 2 ...
init_arr %x 429 429 // координата X в т1, координата X в т2
init_arr %y 560 590 // координата Y в т1, координата Y в т2
init_arr %xx 429 429 X1 X2 X3 !!! // координаты кликов X
init_arr %yy 620 650 Y1 Y2 Y3 !!! // координаты кликов Y
set #proverka 0 // cчетчик проверки цвтов во всех точках
while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно
for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета)
log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color
if %x[#i], %y[#i] %color[#i]
while %x[#i], %y[#i] %color[#i]
move %xx[#i] %yy[#i]
wait 100
end_while
set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут
else // если нет цвета в точке
set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1
kleft %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие)
end_if // конец условия
if #proverka >= 2 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла for
end_if
end_for
if #proverka >= 2 // если в 3 точках отсутствует цвет, то...
break // выйти из цикла while
end_if
end_while
end_script
set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs)
while #d > 0
set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs)
wait 10000
if #d = 0
end_if
end_while
set workwindow findwindow ("Manager") // указываем окно поиска
set delimiter ' '
init_arr %a (1 4) 1 2 3 4 5 6 7 8 9 10 11 12 // координаты для поиска
init_arr %b (1 2) 1 2 3 4 5 6 // координаты для клика
while size(%a) > 0
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
end_script
set workwindow findwindow ("Manager") // указываем окно поиска
log workwindow // отчет. нашел ли окно
set windowpos 1, 515
set delimiter ' '
init_arr %a (1 4) 433 890 433 890 433 920 433 920 433 950 433 950 // координаты для поиска
init_arr %b (1 2) 433 560 433 590 433 620 // координаты для клика
log size(%a) // отчет. получил ли размер массива
while size(%a) > 0
log voshli v while // отчет. получил ли размер массива
for #i 1 size(%a)
log voshli v for // отчет. получил ли размер массива
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
log результат поиска: #fc // отчет. должен быть не меньше нуля
if #fc = 0
log cvet ne naiden // отчет. не нашли цвет. Далее делается клик. Курсор должен уехать в точку клика.
kleft %b[#i]
log %b[#i] // отчет. проверяем туда ли был сделан клик.
delete_array %a -#i
delete_array %b -#i
break
end_if
log cvet naiden // отчет. проверенная кнопка подсвечена.
end_for
end_while
log цвет больше нигде не найден // отчет. все кнопки погасли, заканчиваем работу.
end_script
и кстати в скрипте от FREEON, тоже самое если привязать окно, то кликает в самый низ окна....но вот цвета не находит. попробовал не привязывать окно в скрипте Fors1k, кликает в нужное место, только 1 раз, остальные клики все в место первого клика
используй findimage и не грузи народ...сложность нашол там где ее нет
https://mfd.sk/_k4LqWblgRNoBJZKneP7BKU1
На видео я отключаю зеленый цвет на ячейке с цифрой 3, скрипт кликает в ячейку с цифрой 3 красного цвета, отключаю зеленый 1, клик в красный 1, отключил 2, клик в красный 2, на этом конец работы. Все клики разные и в нужные места. Как ты и просил. Скрипт, как видишь рабочий. Не знаю что еще добавить))
Где-то ошибку допускаешь ты.
Я сказал как найти ошибку (используя логи), ты не хочешь.
set workwindow 1184446//findwindow ("Manager") // указываем окно поиска
set delimiter ' '
init_arr %a (1 4) 46 91 124 107 47 149 127 165 45 209 129 222 // координаты для поиска
init_arr %b (1 2) 562 41 566 71 565 102 // координаты для клика
while size(%a) > 0
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (4697456) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
end_script
set workwindow 1184446//findwindow ("Manager") // указываем окно поиска
set delimiter ' '
init_arr %a (1 4) 46 91 124 107 47 149 127 165 45 209 129 222 // координаты для поиска
init_arr %b (1 2) 562 41 566 71 565 102 // координаты для клика
while size(%a) > 0
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (4697456) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
end_script
set #handle findwindow ("Manager") // найти окно
set workwindow #handle // сделать его рабочим
delete
не могу понять, если значение тут 1 цифра " init_arr %tw (1) 4 5 ", то работает корректно и правильно находит стол, но если больше 1 значение, начинается хаос с выбором стола.
set delimiter ' '
set workwindow 394820
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 // записать координаты всех мест поиска цвета: StartX StartY EndX EndY.
init_arr %b (1 2) 2354 740 2354 770// записать координаты всех мест клика: X Y.
init_arr %tw (1) 4 5
while size(%a) > 0
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
wait 33s
kleft 1058, 216 abs
wait 3s
set #ld linedelay
set linedelay 40
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
set workwindow 394820 // окно, которое будем перемещать
showwindow workwindow
if #cw < %tw[#i]
set #a 2
else
set #a 1
end_if
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
wait 350
sendex_down ~{F10}
wait 200
sendex_up ~{F10}
wait 200
sendex {Down}
wait 200
sendex {Down}
wait 200
sendex {Right}
wait 200
repeat %tw[#i] - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
set linedelay #ld
delete_array %tw -#i
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
всем, спс! разобрался....
init_arr %a (1) // в скобках используется для координат.
init_arr %a 1 //без скобок символы.
ps. подскажите, а как в последний массив кода, который выше, добавить таймер?
set delimiter ' '
set workwindow 394820
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 // записать координаты всех мест поиска цвета: StartX StartY EndX EndY.
init_arr %b (1 2) 2354 740 2354 770// записать координаты всех мест клика: X Y.
init_arr %tw (1) 4 5
while size(%a) > 0
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
wait 33s
kleft 1058, 216 abs
wait 3s
set #ld linedelay
set linedelay 40
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
set workwindow 394820 // окно, которое будем перемещать
showwindow workwindow
if #cw < %tw[#i]
set #a 2
else
set #a 1
end_if
sendex_down {WindowsLeft}{Tab}
sendex_up {WindowsLeft}{Tab}
wait 350
sendex_down ~{F10}
wait 200
sendex_up ~{F10}
wait 200
sendex {Down}
wait 200
sendex {Down}
wait 200
sendex {Right}
wait 200
repeat %tw[#i] - #a
sendex {Down}
end_repeat
sendex {Enter}
sendex {Escape}
set linedelay #ld
delete_array %tw -#i
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
поправите пожалуйста если неправильно, но вроде работает (таймер)
set delimiter ' '
set workwindow 394820
set #timeout timer + 30000 // устанавливает значение timer
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 or timer < #timeout
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
if timer >= #timeout // если вышло время
break
end_if
end_while
end_script
set delimiter ' '
set workwindow 394820
set #timeout timer + 30000 // устанавливает значение timer
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 or timer < #timeout
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
if timer >= #timeout // если вышло время
break
end_if
end_while
end_script
set delimiter ' '
set workwindow 394820
set #timeout 30000 // установить значение #timeout
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 and timer < #timeout
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
end_script
set delimiter ' '
set workwindow 394820
set #timeout 30000 // установить значение #timeout
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 and timer < #timeout
for #i 1 size(%a)
set #a %a[#i 1]
set #b %a[#i 2]
set #c %a[#i 3]
set #d %a[#i 4]
set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow)
if #fc = 0
kleft %b[#i]
delete_array %a -#i
delete_array %b -#i
break
end_if
end_for
end_while
end_script
разобрался
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)