Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: zkripter on March 06, 2016, 01:55:16 PM
-
Написал код, а он глючит.
Задача скрипта перемещать на один вверх курсор выделения в списке закладок браузера Mozilla Firefox (это все в окне "Показать все закладки"). Код работает до конца списка.
Проблема в том, что код примерно в 50% случаев прогона даже по одному списку закладок внезапно останавливается на случайном значении. Я думал, что просто не успевает обновиться экран после нажатия #up или что-то вроде этого, поэтому понапихал везде задержек. Задержка после keypress(#up) вроде себя оправдывает, но остальные не помогают - код все-равно глючит.
#name "test script"
define($_) // Произвольная пер-я, чтобы dialogbox работала.
define($n, 0) // Счетчик для имен файлов скриншотов.
define($endlist, 0) // Если 1, то конец списка.
define($file) // Файл скриншота.
sub(fname) // Формируем имя файла скриншота на основе счетчика.
if ($n < 10)
$file = strconcat("screens\stt000", $n, ".bmp")
else
if ($n < 100)
$file = strconcat("screens\stt00", $n, ".bmp")
else
$file = strconcat("screens\stt0", $n, ".bmp")
end_if
end_if
inc($n)
end_sub
sub (uplist) // На один пункт вверх в списке закладок.
if ($n = 0)
getscreen
screenshotex(254, 59, 275, 595, "stt")
end_if
keypress(#up)
waitms(100)
getscreen
fname()
if_picture_in(254, 59, 275, 595, $file)
$endlist = 1
else
screenshotex(254, 59, 275, 595, "stt")
waitms(100)
end_if
end_sub
waitms(100)
while ($endlist = 0) // Пока весь список не закончится ...
waitms(100) // ... делаем что-то с закладкой.
uplist ()
end_cyc
waitms(100)
execute("auto_del.bat") // Очищаем папку со скриншотами.
$_ = dialogbox($n, 0, 4) // Отладка.
//$_ = dialogbox("ГОТОВО", 0, 4)
halt
-
Добавь запись в лог в условия что бы понять в какой момент происходит зависание. Опять же вывод значения $n
Ошибок в скрипте не видно.
Зачем эти подпрограммы на 1 раз?
#name "test script"
define($n, 0) // Счетчик для имен файлов скриншотов.
define($endlist, 0) // Если 1, то конец списка.
while ($endlist = 0) // Пока весь список не закончится ...
waitms(100) // ... делаем что-то с закладкой.
if ($n = 0)
getscreen
screenshotex(254, 59, 275, 595, "stt")
end_if
keypress(#up)
waitms(100)
if ($n < 10)
$file = strconcat("screens\stt000", $n, ".bmp")
else
if ($n < 100)
$file = strconcat("screens\stt00", $n, ".bmp")
else
$file = strconcat("screens\stt0", $n, ".bmp")
end_if
end_if
inc($n)
getscreen
if_picture_in(254, 59, 275, 595, $file)
$endlist = 1
else
screenshotex(254, 59, 275, 595, "stt")
waitms(100)
end_if
end_cyc
waitms(100)
execute("auto_del.bat") // Очищаем папку со скриншотами.
$_ = dialogbox($n, 0, 4) // Отладка.
//$_ = dialogbox("ГОТОВО", 0, 4)
halt
-
Зачем эти подпрограммы на 1 раз?
В будущем будет больше процедур и главный цикл будет сложнее, поэтому я хочу все распихать по модулям. А здесь выложил все в одном для удобства. Программа пока еще не выросла.
-
Заработало наконец.
Уменьшил ширину области до 1 пикселя. Прогнал по нескольку десятков списков закладок по шесть раз каждый - ни одной ошибки :)