Author Topic: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!  (Read 6612 times)

0 Members and 3 Guests are viewing this topic.

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Есть текст. Открыты вкладки в браузере.
Нужно сделать так, чтобы он скопировал ссылки всех вкладок браузера и вставил их в столбик в отдельном приложении в определенное место. Сложность в том, что кол-во вкладок всегда разное. Иногда 10 (максимум), а иногда 2. Он не должен создавать пустые строки.

Определенное кол-во я сделал. А чтобы разное было..

Другими словами..
Открывает к примеру 2 вкладку. Копирует текст, затем нажимает на Ctrl + F3, открывает 3 вкладку. Если таковая есть, копирует ссылку. Далее нажимает на Ctrl + F4. А 4 вкладки нет. Тогда проводит другое действие.

Подскажите, возможно ли сделать это?
« Last Edit: December 01, 2018, 04:16:19 PM by SanSib »

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Вполне возможно.
Количество вкладок можно определять, допустим, по крестику "закрыть" у каждой из них (ведь если очень много вкладок, то их размеры меняются). Ну или по полоске-разделителю между вкладками.
Делаете заготовку рисунка,  через scanpictures находите их все. А дальше преобразуете пример из шаблона scanpicture, чтобы не просто наводил курсор на найденные картинки, но и кликал на несколько пикселей левее, дальше кликал на адресную строку, копировал, вставлял куда надо и жал клавиши (в общем, делал, что положено) - можно также  заставить его самостоятельно определять какую клавишу нажимать (F3, 4,5 или 10)(правда, удобнее через десятичные коды клавиш).
« Last Edit: December 01, 2018, 06:09:21 PM by Qwerry »

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Вполне возможно.
Количество вкладок можно определять, допустим, по крестику "закрыть" у каждой из них (ведь если очень много вкладок, то их размеры меняются)
Делаете заготовку рисунка крестика,  через scanpictures находите их все. А дальше преобразуете пример из шаблона scanpicture, чтобы не просто наводил курсор на найденные картинки, но и кликал на несколько пикселей левее, дальше кликал на адресную строку, копировал, вставлял куда надо и жал клавиши (в общем, делал, что положено) - можно также  заставить его самостоятельно определять какую клавишу нажимать (F3, 4,5 или 10)(правда, удобнее через десятичные коды клавиш).

Кроме крестиков используется один сайт всегда, а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
« Last Edit: December 01, 2018, 09:48:50 PM by SanSib »

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Кроме крестиков используется один сайт всегда, а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
Думаю, всё получится)
К слову, если были бы разные сайты, но действовать надо с 4-й вкладки, то можно было исключить первые. Условно, это может выглядеть как-то так:
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "рисунок.bmp", -1, 100)  //ищем отметки конца вкладок/крестики и т.п, координаты поиска лучше указать довольно точно, чтоб проверял лишь верх, так быстрее будет. В массиве начиная с 0-го элемента лежат х и у вкладок.
$ARR_NUM = 6 //  (0,2,4,6...)  если начинать надо с 4-й вкладки, а не с первой
$b=113             //   Номер клавиши F2,  эти клавиши по порядку идут, список всех номеров клавиш в справке
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))    //  пока не сделана работа во всех вкладках
   $X = $ARR_SCAN [$ARR_NUM]       
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]       
   INC($ARR_NUM,1)
   lclick($X-20, $Y)   // кликает по вкладке на 20 пикселей левее, чем "закрыть"
   Waitms(1000)// задержка, но сами решите, нужна ли и какая
   For($a=0,$a<3)
      lclick(500, 80)   //    тройной клик (выделение всего абзаца) по адресной сроке. Можно и относительные координаты
      waitms(30)
   end_cyc
KEYDOWN(#CTRL)     //копируем ссылку
waitms(30)
KEYPRESS(#c) 
KEYUP(#CTRL)
//     про вставить ничего не сказано, но сами разберетесь
KEYPRESS($b)       //нажать Ф2
INC($b,1)          // увеличиваем, чтобы в след раз жал Ф3
   
END_CYC
UNDEFINE($ARR_SCAN)

 //далее, когда вкладки закончились, совершаем другие действия
HALT
« Last Edit: December 01, 2018, 10:11:35 PM by Qwerry »

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Кроме крестиков используется один сайт всегда (Портал государственных закупок), а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
Думаю, всё получится)
К слову, если были бы разные сайты, но действовать надо с 4-й вкладки, то можно было исключить первые из действиq. Условно, это может выглядеть как-то так:
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "рисунок.bmp", -1, 100)  //ищем отметки конца вкладок/крестики и т.п, координаты поиска лучше указать довольно точно, чтоб проверял лишь верх, так быстрее будет. В массиве начиная с 0-го элемента лежат х и у вкладок.
$ARR_NUM = 6 //  (0,2,4,6...)  если начинать надо с 4-й вкладки, а не с первой
$b=113             //   Номер клавиши F2,  эти клавиши по порядку идут, список всех номеров клавиш в справке
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))    //  пока не сделана работа во всех вкладках
   $X = $ARR_SCAN [$ARR_NUM]       
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]       
   INC($ARR_NUM,1)
   lclick($X-20, $Y)   // кликает по вкладке на 20 пикселей левее, чем "закрыть"
   Waitms(1000)// задержка, но сами решите, нужна ли и какая
   For($a=0,$a<3)
      lclick(500, 80)   //    тройной клик (выделение всего абзаца) по адресной сроке. Можно и относительные координаты
      waitms(30)
   end_cyc
KEYDOWN(#CTRL)     //копируем ссылку
waitms(30)
KEYPRESS(#c) 
KEYUP(#CTRL)
//     про вставить ничего не сказано, но сами разберетесь
KEYPRESS($b)       //нажать Ф2
INC($b,1)          // увеличиваем, чтобы в след раз жал Ф3
   
END_CYC
UNDEFINE($ARR_SCAN)

 //далее, когда вкладки закончились, совершаем другие действия
HALT

Спасибо большое!
Я с кликерами и вообще хоть с каким-то программированием знаком всего 2 дня. Так что сори, если какие-то банальные вещи не понимаю. Всегда сначала ищу информацию сам, но тем не менее заинтересовался и увлекся этим и есть пара нюансов и вопросов)

1) Если он ищет и жмет на вкладки по скринам (в моем случае скриншотом является иконка сайта), зачем тогда нажатие Ctrl + 1,2 и т.д?

2) 1 вкладка - это другой сайт. Там и иконка другая. Другими словами, нужно нажать на все сайты с иконкой, соответствующей заданной.

3) Комбинация Ctrl+2 открывает 2 вкладку. Вы пишете, что 4. Не совсем понятно!
Code: (clickermann) [Select]
$ARR_NUM = 6 //  (0,2,4,6...)  если начинать надо с 4-й вкладки, а не с первой
$b=113             //   Номер клавиши F2,  эти клавиши по порядку идут, список всех номеров клавиш в справке

4) Изменил 3 на 1, чтобы был 1 клик. Дело в том, что при клике на браузерную строку у меня она выделяется вся автоматически. Здесь же нужно менять?
Code: (clickermann) [Select]
For($a=0,$a<1)
      lclick(500, 80)   //    тройной клик (выделение всего абзаца) по адресной сроке. Можно и относительные координаты

5) Получился такой код. Он почему-то даже не начинает искать и копировать:( Правильно ли я сделал? Конец я еще не доделал.
Code: (clickermann) [Select]
GETSCREEN(32,0,1058,30)
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "Герб.bmp", -1, 100)  //ищем отметки конца вкладок/крестики и т.п, координаты поиска лучше указать довольно точно, чтоб проверял лишь верх, так быстрее будет. В массиве начиная с 0-го элемента лежат х и у вкладок.
$ARR_NUM = 6 //  (0,2,4,6...)  если начинать надо с 4-й вкладки, а не с первой
$b=113             //   Номер клавиши F2,  эти клавиши по порядку идут, список всех номеров клавиш в справке
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))    //  пока не сделана работа во всех вкладках
   $X = $ARR_SCAN [$ARR_NUM]       
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]       
   INC($ARR_NUM,1)
   lclick($X+20, $Y+4)   // кликает по вкладке на 20 пикселей левее, чем "закрыть"
   Waitms(500)// задержка, но сами решите, нужна ли и какая
   For($a=0,$a<1)
      lclick(500, 80)   //    тройной клик (выделение всего абзаца) по адресной сроке. Можно и относительные координаты
      waitms(30)
   end_cyc
KEYDOWN(#CTRL)     //копируем ссылку
waitms(30)
KEYPRESS(#c) 
KEYUP(#CTRL)
WAITMS(500)
LCLICK(165,752)  // Вставка в программу
WAITMS(500)
LCLICK(434,313)  // Вставка в нужное место
WAITMS(200)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)

KEYPRESS($b)       //нажать Ф2
INC($b,1)          // увеличиваем, чтобы в след раз жал Ф3
 
END_CYC
UNDEFINE($ARR_SCAN)
 
 //далее, когда вкладки закончились, совершаем другие действия
HALT

6) поскольку клик идет на иконку сайта, то курсор может оставаться на месте)
« Last Edit: December 01, 2018, 10:27:32 PM by SanSib »

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Кроме крестиков используется один сайт всегда (Портал государственных закупок)
Ну ведь очередная-же провокация, нацеленная создать повод для закрытия форума!
Удалите эту тему вообще!!!
Что в моих комментариях вы нашли провокационного? То, что я работаю в сфере госзакупок? Этот факт разве пвлияет на закрытие форума? (Портал государственных закупок) стер в своем комментарии.

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Спасибо большое!
Я с кликерами и вообще хоть с каким-то программированием знаком всего 2 дня. Так что сори, если какие-то банальные вещи не понимаю. Всегда сначала ищу информацию сам, но тем не менее заинтересовался и увлекся этим и есть пара нюансов и вопросов)
1) Если он ищет и жмет на вкладки по скринам (в моем случае скриншотом является иконка сайта), зачем тогда нажатие Ctrl + 1,2 и т.д?
2) 1 вкладка - это другой сайт. Там и иконка другая. Другими словами, нужно нажать на все сайты с иконкой, соответствующей заданной.
3) Комбинация Ctrl+2 открывает 2 вкладку. Вы пишете, что 4. Не совсем понятно!
4) Изменил 3 на 1, чтобы был 1 клик. Дело в том, что при клике на браузерную строку у меня она выделяется вся автоматически. Здесь же нужно менять?
5) Получился такой код. Он почему-то даже не начинает искать и копировать:( Правильно ли я сделал? Конец я еще не доделал.
6) поскольку клик идет на иконку сайта, то курсор может оставаться на месте)

1) Полагаю, незачем) Просто у меня в браузере другое управление, поэтому возникло предположение, что ctrl+f нужны для подтверждения записи в приложение, а не для смены вкладки. Убираем.
2) Значит просто возвращаем $ARR_NUM = 0  - и работать начнет с первой же найденной картинки.
3) см.п.1. У меня другой браузер, так что вам виднее, зачем было нужно нажимать)
4) Да, вы правильно поняли. Хотя если клик 1, то и цикл там не нужен, можно оставить лишь клик.
5) В целом ошибок вроде нет (правда, у GETSCREEN и SCANPICTURE не совпадали полностью координаты, ну и теперь лишнее убрано). А так, скрипт, если ничего не найдет, то он ничего и не будет делать. Вероятно или область поиска не та, или процент совпадения надо изменить, или шаблон неправильный. В идеале рисунок стоит делать через сам кликер (есть еще вариант, что вы используете привязку, а она на браузеры нередко ложится криво - если нет крайней необходимости, лучше не привязывать никогда)
Вот так скрипт в логе укажет, сколько картинок нашел, а если ни одной, то сохранит то место, где искал (создаст в папке Скринс рядом с собой). Если координаты верные, просто оттуда вырежете новый шаблон Герба и перепроверите. Ну и после можно уменьшить  процент совпадения (хотя, вряд ли понадобится).


Code: (clickermann) [Select]
GETSCREEN(32,0,1058,30)     // место поиска не совпадает
SCANPICTURE($ARR_SCAN,32,0,1058,30, "Герб.bmp", -1, 100)  //ищем отметки. Последняя цифра (100) - % точности поиска, если не находит - можно попробовать снизить
Print("Найдено подходящих вкладок: ", ARRSIZE($ARR_SCAN)/2)
 If(ARRSIZE($ARR_SCAN)=0)
  Print(" Ничего не найдено, измените условия поиска или переделайте шаблон, сохраняю новый рисунок")
SCREENSHOTEX(32,0,1058,30, "Иконки не найдены", 0)
HALT
 End_if
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))    //  пока не сделана работа во всех вкладках
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   lclick($X+20, $Y+4)   // кликает по вкладке
   Waitms(500)// задержка, но сами решите, нужна ли и какая
   
   lclick(500, 80)
   waitms(30)
   KEYDOWN(#CTRL)     //копируем ссылку
   waitms(30)
   KEYPRESS(#c)
  waitms(30)
   KEYUP(#CTRL)
   WAITMS(500)
   LCLICK(165,752)  // Вставка в программу
   WAITMS(500)
   LCLICK(434,313)  // Вставка в нужное место
   WAITMS(200)
   KEYDOWN (#CTRL)
   WAITMS (30)
   KEYPRESS (#V)
WAITMS (30)
   KEYUP (#CTRL)
WAITMS (30)
// KEYPRESS (#ENTER) // если в столбик и нужен энтер, то убрать слеши

END_CYC
UNDEFINE($ARR_SCAN)

//далее, когда вкладки закончились, совершаем другие действия
HALT
« Last Edit: December 02, 2018, 12:19:07 AM by Qwerry »

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Спасибо большое!
Я с кликерами и вообще хоть с каким-то программированием знаком всего 2 дня. Так что сори, если какие-то банальные вещи не понимаю. Всегда сначала ищу информацию сам, но тем не менее заинтересовался и увлекся этим и есть пара нюансов и вопросов)
1) Если он ищет и жмет на вкладки по скринам (в моем случае скриншотом является иконка сайта), зачем тогда нажатие Ctrl + 1,2 и т.д?
2) 1 вкладка - это другой сайт. Там и иконка другая. Другими словами, нужно нажать на все сайты с иконкой, соответствующей заданной.
3) Комбинация Ctrl+2 открывает 2 вкладку. Вы пишете, что 4. Не совсем понятно!
4) Изменил 3 на 1, чтобы был 1 клик. Дело в том, что при клике на браузерную строку у меня она выделяется вся автоматически. Здесь же нужно менять?
5) Получился такой код. Он почему-то даже не начинает искать и копировать:( Правильно ли я сделал? Конец я еще не доделал.
6) поскольку клик идет на иконку сайта, то курсор может оставаться на месте)

1) Полагаю, незачем) Просто у меня в браузере другое управление, поэтому возникло предположение, что ctrl+f нужны для подтверждения записи в приложение, а не для смены вкладки. Убираем.
2) Значит просто возвращаем $ARR_NUM = 0  - и работать начнет с первой же найденной картинки.
3) см.п.1. У меня другой браузер, так что вам виднее, зачем было нужно нажимать)
4) Да, вы правильно поняли. Хотя если клик 1, то и цикл там не нужен, можно оставить лишь клик.
5) В целом ошибок вроде нет (правда, у GETSCREEN и SCANPICTURE не совпадали полностью координаты, ну и теперь лишнее убрано). А так, скрипт, если ничего не найдет, то он ничего и не будет делать. Вероятно или область поиска не та, или процент совпадения надо изменить, или шаблон неправильный. В идеале рисунок стоит делать через сам кликер (есть еще вариант, что вы используете привязку, а она на браузеры нередко ложится криво - если нет крайней необходимости, лучше не привязывать никогда)
Вот так скрипт в логе укажет, сколько картинок нашел, а если ни одной, то сохранит то место, где искал (создаст в папке Скринс рядом с собой). Если координаты верные, просто оттуда вырежете новый шаблон Герба и перепроверите. Ну и после можно уменьшить  процент совпадения (хотя, вряд ли понадобится).


Code: (clickermann) [Select]
GETSCREEN(32,0,1058,30)     // место поиска не совпадает
SCANPICTURE($ARR_SCAN,32,0,1058,30, "Герб.bmp", -1, 100)  //ищем отметки. Последняя цифра (100) - % точности поиска, если не находит - можно попробовать снизить
Print("Найдено подходящих вкладок: ", ARRSIZE($ARR_SCAN)/2)
 If(ARRSIZE($ARR_SCAN)=0)
  Print(" Ничего не найдено, измените условия поиска или переделайте шаблон, сохраняю новый рисунок")
SCREENSHOTEX(32,0,1058,30, "Иконки не найдены", 0)
HALT
 End_if
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))    //  пока не сделана работа во всех вкладках
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   lclick($X+20, $Y+4)   // кликает по вкладке
   Waitms(500)// задержка, но сами решите, нужна ли и какая
   
   lclick(500, 80)
   waitms(30)
   KEYDOWN(#CTRL)     //копируем ссылку
   waitms(30)
   KEYPRESS(#c)
  waitms(30)
   KEYUP(#CTRL)
   WAITMS(500)
   LCLICK(165,752)  // Вставка в программу
   WAITMS(500)
   LCLICK(434,313)  // Вставка в нужное место
   WAITMS(200)
   KEYDOWN (#CTRL)
   WAITMS (30)
   KEYPRESS (#V)
WAITMS (30)
   KEYUP (#CTRL)
WAITMS (30)
// KEYPRESS (#ENTER) // если в столбик и нужен энтер, то убрать слеши

END_CYC
UNDEFINE($ARR_SCAN)

//далее, когда вкладки закончились, совершаем другие действия
HALT

Создал тестовый скрипт для поиска картинок в этих же координатах. Их находит без проблем.
Code: (clickermann) [Select]
GETSCREEN(32,0,1058,30)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Герб.bmp" -1, 100)
WAITMS(300)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

В нашем с вами скрипте даже во 2 варианте, как молчал после команды, так и молчит:(
Вы предлагали по очередности F2, F3 и т.д. Может всё-таки это будет проще и надежнее? Дело в том, что по картинкам по непонятным мне причинам из 4 вкладок он прыгал по картинкам, первые 3 нажимал. но 4 вкладку ни разу не нажал. В итоге появились сомнения в надежности поиска. Точность уменьшал, координаты проверял и менял.

И я вам очень благодарен за помощь) Чем вас отблагодарить?
« Last Edit: December 02, 2018, 01:50:14 AM by SanSib »

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
>Создал тестовый скрипт для поиска картинок в этих же координатах. Их находит без проблем.

SCANPICTURE и IF_PICTURE_IN имеют схожий принцип: попиксельно сверяют графический буфер на предмет совпадения с образцом. Просто первый современнее и работает не до первого совпадения, а до конца. Если что-то не находит один из них, то не найдет и другой.
Вы уверены, что у вас IF_PICTURE_IN может найти каждую из картинок, а не одну лишь ту, которую сохранили как образец?

> Вы предлагали по очередности F2, F3 и т.д. Может всё-таки это будет проще и надежнее?

Возможно, но не факт. Давайте оставим это как последний вариант, если все остальное не сработает? Альтернативный вариант вообще без анализа графики (алгоритм: менять вкладки, копировать ссылку и если она содержит название сайта, вставлять куда положено). Наш вариант преимущественно правильный, просто нужна отладка под конкретный компьютер и задачу, так что теперь будем смотреть, что пишет в логах (иконка блокнотика, чтобы открыть), чтоб видеть в чем возникает загвоздка.

> В нашем с вами скрипте даже во 2 варианте, как молчал после команды, так и молчит:(

Совсем молчит и даже курсором не двигает? Даже без действий и кликов, в логах (иконка блокнотика в редакторе) он уже должен отвечать сколько картинок нашел (а если не нашел, отписаться, что сохранил скрин того, что увидел).  Уже смотрели сохраненные им картинки?

> Дело в том, что по картинкам по непонятным мне причинам из 4 вкладок он прыгал по картинкам, первые 3 нажимал. но 4 вкладку ни разу не нажал. В итоге появились сомнения в надежности поиска. Точность уменьшал, координаты проверял и менял.

По поводу не всех найденных картинок: программе виднее, если они отличаются.
Сперва хотелось сказать, что отличаются иконки у вас на компьютере, но проверив код на Хроме и поиске вкладок Гугл, удалось выяснить, что и у меня тоже из всех семи "одинаковых" иконок находит лишь ту, которая и была сохранена в шаблоны :o Век живи, век учись, как говорится) Полагаю, влияет полупрозрачность окон или другие опции ОС, сглаживающие графику, но эта проблема решаема.

Давайте добавим цветокоррекцию (уровень 7, хотя может и меньшего хватило бы), у меня с ней находит правильно, в том числе когда одна из нужных вкладок была активна и ее иконка даже зрительно отличается от остальных, скрипт в блокнотик столбик ссылок вставляет.
В общем, попробуйте заменить начало на вот это)
Code: (clickermann) [Select]
GETSCREEN(32,0,1058,40)     
colormode(7,32,0,1058,40)
SCANPICTURE($ARR_SCAN,32,0,1058,40, "Герб.bmp", -1, 95)
Первый запуск просто - в логах, напишет, что "ничего нет, сохраняю картинку", перед последующим запуском замените "герб.bmp" на вырезанный из последней сохраненной скриптом картинки "Герб").



К слову, когда будет находить всё правильно, возможно возникновение еще одной трудности - защита в компе/приложении, при которой обычные нажатия вирт.клавиш не проходят (курсор двигается, но ничего не происходит). Если в этом причина "молчания", можно попробовать заменить на режимы #ps2_mouse и/или #ps2_keyboard (подробности в Справка>Кликкерман>Особенности>Режим ps/2).


>И я вам очень благодарен за помощь) Чем вас отблагодарить?
А не рано ли?) Ведь ещё не всё заработало как надо и не со всеми вопросами разобрались  :) 
Года полтора у меня был абсолютно нулевой уровень, но мне старожилы здорово помогали, иной раз терпеливо разжевывая очевидное. Так что в каком-то смысле моя помощь - это продолжение традиций из благодарности автору кликера, форуму и форумчанам за обучение и новые возможности (просто мне проще благодарить своим временем, кому-то - удобнее иначе))

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Quote
Вы уверены, что у вас IF_PICTURE_IN может найти каждую из картинок, а не одну лишь ту, которую сохранили как образец?
В браузере находит 3 вместо 4-х.

Quote
Возможно, но не факт. Давайте оставим это как последний вариант, если все остальное не сработает? Альтернативный вариант вообще без анализа графики (алгоритм: менять вкладки, копировать ссылку и если она содержит название сайта, вставлять куда положено). Наш вариант преимущественно правильный, просто нужна отладка под конкретный компьютер и задачу, так что теперь будем смотреть, что пишет в логах (иконка блокнотика, чтобы открыть), чтоб видеть в чем возникает загвоздка.

Что пишет в логах я прикрепляю в скрине.

Quote
Совсем молчит и даже курсором не двигает? Даже без действий и кликов, в логах (иконка блокнотика в редакторе) он уже должен отвечать сколько картинок нашел (а если не нашел, отписаться, что сохранил скрин того, что увидел).  Уже смотрели сохраненные им картинки?
Заметил и то не сразу и не всегда. Пунктиром выделяет кнопку три полоски справа от вкладок (браузерная кнопка вызова меню самого браузера). Изначально она не входит в область для скрина. Она начинается от 1177, а у нас максимум 1058. Больше никаких движений нет. Прикрепляю в скрине. Красная жирная точка где..

Quote
По поводу не всех найденных картинок: программе виднее, если они отличаются.
Сперва хотелось сказать, что отличаются иконки у вас на компьютере, но проверив код на Хроме и поиске вкладок Гугл, удалось выяснить, что и у меня тоже из всех семи "одинаковых" иконок находит лишь ту, которая и была сохранена в шаблоны :o Век живи, век учись, как говорится) Полагаю, влияет полупрозрачность окон или другие опции ОС, сглаживающие графику, но эта проблема решаема.
Хотел бы я всё освоить)

Quote
Давайте добавим цветокоррекцию (уровень 7, хотя может и меньшего хватило бы), у меня с ней находит правильно, в том числе когда одна из нужных вкладок была активна и ее иконка даже зрительно отличается от остальных, скрипт в блокнотик столбик ссылок вставляет.
В общем, попробуйте заменить начало на вот это)
Code: (clickermann) [Select]
GETSCREEN(32,0,1058,40)     
colormode(7,32,0,1058,40)
SCANPICTURE($ARR_SCAN,32,0,1058,40, "Герб.bmp", -1, 95)
Первый запуск просто - в логах, напишет, что "ничего нет, сохраняю картинку", перед последующим запуском замените "герб.bmp" на вырезанный из последней сохраненной скриптом картинки "Герб").
Менял. Создавал другую картинку. Другой скрин. Всё-равно.


Quote
К слову, когда будет находить всё правильно, возможно возникновение еще одной трудности - защита в компе/приложении, при которой обычные нажатия вирт.клавиш не проходят (курсор двигается, но ничего не происходит). Если в этом причина "молчания", можно попробовать заменить на режимы #ps2_mouse и/или #ps2_keyboard (подробности в Справка>Кликкерман>Особенности>Режим ps/2).
Пока всё стоит)

Quote
А не рано ли?) Ведь ещё не всё заработало как надо и не со всеми вопросами разобрались  :) 
Года полтора у меня был абсолютно нулевой уровень, но мне старожилы здорово помогали, иной раз терпеливо разжевывая очевидное. Так что в каком-то смысле моя помощь - это продолжение традиций из благодарности автору кликера, форуму и форумчанам за обучение и новые возможности (просто мне проще благодарить своим временем, кому-то - удобнее иначе))
Тоже есть желание всё освоить)) У меня принцип: если тебе что-то дали, отдай ему в 10 раз больше!)
« Last Edit: December 02, 2018, 09:38:47 PM by SanSib »

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Заметил и то не сразу и не всегда. Пунктиром выделяет кнопку три полоски справа от вкладок (браузерная кнопка вызова меню самого браузера). Изначально она не входит в область для скрина. Она начинается от 1177, а у нас максимум 1058. Больше никаких движений нет. Прикрепляю в скрине. Красная жирная точка где..
Любопытно, получается у вас масштаб экрана не 100%, раз не совпадают координаты? Это многое может объяснить, попробуйте вернуть на 100%.
http://crapware.aidf.org/forum/index.php?topic=3629.msg24622#msg24622

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Есть возможность попробовать другой сайт и другой ПК.

Закупки можно смотреть с другого сайта.
Там более простая иконка.

Но на этом ноуте по умолчанию стоит всё-же 100%.

О результатах отпишусь вечером.
« Last Edit: December 02, 2018, 10:44:46 PM by SanSib »

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Есть возможность попробовать другой сайт и другой ПК.

Закупки можно смотреть с другого сайта.
Там более простая иконка.

Но на этом ноуте по умолчанию стоит всё-же 100%.

О результатах отпишусь вечером.
Другой вариант, почему координаты могут не совпадать, это если вы используете привязку. Убедитесь, что при запуске скрипта (в маленьком окне Кликермана, когда закрыли редактор) написано "привязка к окну Статус Выкл.).
Привязка штука тонкая, сложная, и обычно к ней надо приноравливаться, так что если есть минимальная возможность работать без нее - так и следует делать (а с тем, что работаете сразу в двух окнах, значит надо будет перепривязываться попеременно и вообще веселиться по полной. Вам она незачем). Да и в принципе, даже если планируется в итоге работать с привязкой, изначально проверять работоспособность кода надо без нее.
Когда попробуйте, отпишитесь что написал в логах (если он увидел картинки).

P.S. Вариант без графического анализа уже опробован. Но опять же, с отключенной привязкой его надо, ну и вообще выяснить, двигается ли мышка и засчитываются ли нажатия клавиш. Кстати, у вас на том браузере смена вкладок через cntrl+tab работает?
« Last Edit: December 03, 2018, 06:06:20 PM by Qwerry »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Я может чегото недопонимаю, сильно не вникал в проблемму. Но вот мое видение того что вы пытаетесь решить.

SanSib описал задачу (я даже не читал, сорри). Далее, Qwerry, уточнив какието подробности, написала первоначальный скрипт, который нужно отлаживать в дальнейшем. там есть такой код:
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "рисунок.bmp", -1, 100)
//и так далее

SanSib начал его редактировать под себя, и следующий его пост показал нам уже код вот такой:
Code: (clickermann) [Select]
GETSCREEN(32,0,1058,30)
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "Герб.bmp", -1, 100)
//и так далее
Далее Qwerry чтото там подправила, но параметры области гетскрина и поиска картинок взяла обновленные (32,0,1058,30)
Потом много текста по какимто косякам.... И вдруг заострение внимания на том, что почемуто не находит картинку в этой области:
Quote
Заметил и то не сразу и не всегда. Пунктиром выделяет кнопку три полоски справа от вкладок (браузерная кнопка вызова меню самого браузера). Изначально она не входит в область для скрина. Она начинается от 1177, а у нас максимум 1058. Больше никаких движений нет. Прикрепляю в скрине. Красная жирная точка где..

Так с какого хера должно найти картинку в координате 1177 , если область поиска (32,0,1058,30) .

А потом какието непонятные предположения насчет масштабирования и привязки  :-\.

Может я чегото недопонял ?  :-\ .

Мое мнение, нужно просто убрать параметры из гетскрин, и взять область поиска по всей ширине, как это было в первоначальном варианте:
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "рисунок.bmp", -1, 100)

Да, видел в списке проблем, что ифпикчер находит, а сканпикчер не находит, это уже другой вопрос. Просто я обратил внимание именно на заострении внимания на ненахождении картинки  в незаскриненной области.

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Я может чего-то недопонимаю, сильно не вникал в проблему. Но вот мое видение того что вы пытаетесь решить.
.....
Да, видел в списке проблем, что ифпикчер находит, а сканпикчер не находит, это уже другой вопрос. Просто я обратил внимание именно на заострении внимания на ненахождении картинки  в незаскриненной области.
Спасибо) Кстати, про сканпикчер не знала, у меня не глючил (ну или замечен не был).

Там не то, чтобы просто искали картинку из области, не захваченной скрином, скорее наоборот - когда не найдя картинку кликер сохранил скрин, то в нём область оказалась значительно правее заявленной в гетскрине. Фоткали до 1058, а на скрине оказались 1177+. И вопросы про масштабирование и прочее чтобы понять, с чего вдруг зафоткано то, чего по идее там не должно быть. + клики/нажатия клавиш не проходят вроде (вроде тут работа в 2 окнах, не ясно, все не срабатывают или часть)... Так что проверить теорию с привязкой всё-таки стоит. (Помнится, тема "Привязка зло" появилась, когда за один день появились сразу две темы, где новички привязывали не задумываясь, просто потому что захотелось, и внезапно всё-то у них не работало).
 
Quote
Мое мнение, нужно просто убрать параметры из гетскрин, и взять область поиска по всей ширине, как это было в первоначальном варианте:
Code: [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,100, "Герб.bmp", -1, 100)

Да, это должно помочь с поиском) Но все равно вопрос про то, почему не то заскринивается, остался.