Author Topic: Скриншоты, сохранение (имена файлов скриншотов из указанного списка).  (Read 2927 times)

0 Members and 1 Guest are viewing this topic.

olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Добрый день, подскажите, как исправить ошибку скрипта или найти иной подход для реализации поставленной задачи.

Задача  :-\:
0. Использовались версии Clickermann v4.14.000B x32, Clickermann v4.13.014 x64, Win10x64, WinXPx32.
1. Делается скриншот, проверяется на совпадения картинок или нет
2. Если картинка находится, то при сохранении картинки в файл берётся название из списка.

Проблемы  :'( :
- при отработке строчки кода #35 "SCREENSHOTFIX(0,0, $_xmax,$_ymax, STRCONCAT($str1, $xname1, $str2), 0)"..., выдается сообщение об ошибке  интерпретации строки:...(см.скрин ошибка.jpg вложения)

Code: (clickermann) [Select]
//Clickermann v4.14.000B x32

//окна, переменные
$winExcel=WNDFIND("image_spisok_name.xlsx - Excel", 0)
$str1="d:\image_spisok_name\save\"
$str2=".bmp"

//выбрать окно программы "Excel"
WNDBUMP($winExcel)
WAIT(1)
//Делаем скриншот активного окна программы, для поиска нужной картинки
GETSCREEN
COLORMODE(3)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "image1.bmp", -1, 100)
   //ЕСЛИ_Картинка найдена то...
   //выбрать Excel список названий файлов картинок
WAIT(2)
   WNDBUMP($winExcel)
   WAIT(1)
   //коп.названия файла картинки в буфер памяти
   KEYPRESS (#DOWN)
   WAITMS (50)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#C)
   KEYUP (#CTRL)
   WAIT(1)
   $xname1=FROMCLIP()
   //просмотр буфер памяти что скопировалось
   HINTPOPUP($xname1, "Картинка найдена")
   WAIT(1)
   SCREENSHOTFIX(0,0, $_xmax,$_ymax, STRCONCAT($str1, $xname1, $str2), 0)
ELSE
   //Иначе_Картинка не найдена
   SCREENSHOT
    //просмотр буфер памяти что скопировалось
   HINTPOPUP($xname1, "Картинка не найдена")
   //КОНЕЦ_"ЕСЛИ..." - конец условия
END_IF
//Стоп программа
HALT

Варианты исправлений кода ни к чему не привели смена переменных, их порядок, версий программы и т.д., Форум перечитывал, искал но решения не увидел или просмотрел  :(.

Буду рад любым подсказкам, советам, решениям, направлениям или иного подхода для реализации поставленной задачи данными версиями Clickermann если это возможно. Скрины и краткий код прилагаются  :-[.
« Last Edit: March 12, 2019, 06:37:21 PM by olegnd »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Папка указанная в пути существует? Потому что если нет то будет ошибка.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Еще хорошо бы почистить строку из буфера от лишних символов вот таким фильтром
Code: (clickermann) [Select]
$xname1=STRFILTER(FROMCLIP(), "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz1234567890-.() ", 1)

olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Папка указанная в пути существует? Потому что если нет то будет ошибка.
да, папка присутствует, испробую ваш совет, но сообщения буфера памяти не показывает лишнего или возможны скрытые коды каких то символов..
« Last Edit: March 12, 2019, 04:07:42 PM by olegnd »

olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Еще хорошо бы почистить строку из буфера от лишних символов вот таким фильтром
Code: (clickermann) [Select]
$xname1=STRFILTER(FROMCLIP(), "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz1234567890-.() ", 1)

спасибо, испробовал, ваш код добавил перед копированием в буфер памяти и та же самая ошибка при интерпретации строки...
Где ещё покопать  :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Может стоит изучить тот путь который в итоге формируется
Code: (clickermann) [Select]
$xname1=STRFILTER(FROMCLIP(), "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz1234567890-.() ", 1)
$path = STRCONCAT($str1, $xname1, $str2)
LOGWRITE ($path)

olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Может стоит изучить тот путь который в итоге формируется
Code: (clickermann) [Select]
$xname1=STRFILTER(FROMCLIP(), "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz1234567890-.() ", 1)
$path = STRCONCAT($str1, $xname1, $str2)
LOGWRITE ($path)
Code: (clickermann) [Select]
...
$xname1=FROMCLIP()

//анализ правильности пути сохранения файлов из буфера памяти
$path = STRCONCAT($str1, $xname1, $str2)
LOGWRITE ($path)

   //просмотр буфер памяти что скопировалось
   HINTPOPUP($xname1, "Картинка найдена")
   WAIT(1)
   SCREENSHOTFIX(0,0, $_xmax,$_ymax, STRCONCAT($str1, $xname1, $str2), 0)
ELSE
...

запуск от имени админа, лог по пути отсутствует, папка пуста изменил на другую папку пример d:\save\ папку, тоже самое..

+ лог в самой папке Clickermana
12.03.2019 19:08:04 Thread _MAIN(0) raise exception
12.03.2019 19:09:11 Thread _MAIN(0) raise exception
12.03.2019 19:12:11 Thread _MAIN(0) raise exception
12.03.2019 19:14:30 Thread _MAIN(0) raise exception
« Last Edit: March 12, 2019, 08:20:14 PM by olegnd »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
лог по пути отсутствует, папка пуста

+ лог в самой папке Clickermana
12.03.2019 19:08:04 Thread _MAIN(0) raise exception
12.03.2019 19:09:11 Thread _MAIN(0) raise exception
12.03.2019 19:12:11 Thread _MAIN(0) raise exception
12.03.2019 19:14:30 Thread _MAIN(0) raise exception

Чего? Открой лог и посмотри что там! Ищи значок блокнота.

olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
лог по пути отсутствует, папка пуста

+ лог в самой папке Clickermana
12.03.2019 19:08:04 Thread _MAIN(0) raise exception
12.03.2019 19:09:11 Thread _MAIN(0) raise exception
12.03.2019 19:12:11 Thread _MAIN(0) raise exception
12.03.2019 19:14:30 Thread _MAIN(0) raise exception

Чего? Открой лог и посмотри что там! Ищи значок блокнота.

папка c:\Clickermann v4.14 x32\errorlog.txt - значок блокнота
в нём
12.03.2019 19:08:04 Thread _MAIN(0) raise exception
12.03.2019 19:09:11 Thread _MAIN(0) raise exception
12.03.2019 19:12:11 Thread _MAIN(0) raise exception
12.03.2019 19:14:30 Thread _MAIN(0) raise exception

правильно или что-то не так  :-[

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile

папка c:\Clickermann v4.14 x32\errorlog.txt - значок блокнота


olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
« Last Edit: March 12, 2019, 09:55:07 PM by olegnd »

olegnd

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Еще хорошо бы почистить строку из буфера от лишних символов вот таким фильтром
Code: (clickermann) [Select]
$xname1=STRFILTER(FROMCLIP(), "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz1234567890-.() ", 1)

Oraven спасибо  :o, заработало, а то этот код, уже начал снится по ночах,
как всегда "истина была где-то рядом" сказал слепой Пью  8) или Девид Духовный  :o , неважно.

- сначала сбила столку сама фраза-намек "...Еще хорошо бы почистить строку из буфера от лишних символов..." если копируем то зачем очищать то  :D
- потом куда этот фильтр пристроить, какой строчкой 1., 8, 10. и т.д. у вас начинается 1.
- код "$xname1=FROMCLIP()" который по своей простой логике почему то не работает, нужно заменить кодом-конструкцией "очистным фильтром".

 кажись все правильно перечислил, если нет, поправьте...
« Last Edit: March 15, 2019, 01:48:55 PM by olegnd »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
- сначала сбила столку сама фраза-намек "...Еще хорошо бы почистить строку из буфера от лишних символов..." если копируем то зачем очищать то  :D

Затем что при копировании текста из ячейки эксель всегда в конце добавляется невидимые символы перевода строки. Они то и ломали путь.

- потом куда этот фильтр пристроить, какой строчкой 1., 8, 10. и т.д. у вас начинается 1.
- код "$xname1=FROMCLIP()" который по своей простой логике почему то не работает, нужно заменить кодом-конструкцией "очистным фильтром".

Очевидно что за место $xname1=FROMCLIP()