Author Topic: Скрипт глючит или я  (Read 3198 times)

0 Members and 1 Guest are viewing this topic.

zkripter

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Скрипт глючит или я
« on: March 06, 2016, 01:55:16 PM »
Написал код, а он глючит.

Задача скрипта перемещать на один вверх курсор выделения в списке закладок браузера Mozilla Firefox (это все в окне "Показать все закладки"). Код работает до конца списка.

Проблема в том, что код примерно в 50% случаев прогона даже по одному списку закладок внезапно останавливается на случайном значении. Я думал, что просто не успевает обновиться экран после нажатия #up или что-то вроде этого, поэтому понапихал везде задержек. Задержка после keypress(#up) вроде себя оправдывает, но остальные не помогают - код все-равно глючит.

Code: [Select]
#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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Скрипт глючит или я
« Reply #1 on: March 06, 2016, 03:06:05 PM »
Добавь запись в лог в условия что бы понять в какой момент происходит зависание. Опять же вывод значения $n

Ошибок в скрипте не видно.

Зачем эти подпрограммы на 1 раз?
Code: (clickermann) [Select]
#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

zkripter

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Скрипт глючит или я
« Reply #2 on: March 06, 2016, 03:29:20 PM »
Зачем эти подпрограммы на 1 раз?

В будущем будет больше процедур и главный цикл будет сложнее, поэтому я хочу все распихать по модулям. А здесь выложил все в одном для удобства. Программа пока еще не выросла.

zkripter

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Скрипт глючит или я
« Reply #3 on: March 07, 2016, 08:48:00 PM »
Заработало наконец.

Уменьшил ширину области до 1 пикселя. Прогнал по нескольку десятков списков закладок по шесть раз каждый - ни одной ошибки  :)