Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: SimplY on December 01, 2018, 04:09:59 PM

Title: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 01, 2018, 04:09:59 PM
Есть текст. Открыты вкладки в браузере.
Нужно сделать так, чтобы он скопировал ссылки всех вкладок браузера и вставил их в столбик в отдельном приложении в определенное место. Сложность в том, что кол-во вкладок всегда разное. Иногда 10 (максимум), а иногда 2. Он не должен создавать пустые строки.

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

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

Подскажите, возможно ли сделать это?
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 01, 2018, 05:51:57 PM
Вполне возможно.
Количество вкладок можно определять, допустим, по крестику "закрыть" у каждой из них (ведь если очень много вкладок, то их размеры меняются). Ну или по полоске-разделителю между вкладками.
Делаете заготовку рисунка,  через scanpictures находите их все. А дальше преобразуете пример из шаблона scanpicture, чтобы не просто наводил курсор на найденные картинки, но и кликал на несколько пикселей левее, дальше кликал на адресную строку, копировал, вставлял куда надо и жал клавиши (в общем, делал, что положено) - можно также  заставить его самостоятельно определять какую клавишу нажимать (F3, 4,5 или 10)(правда, удобнее через десятичные коды клавиш).
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 01, 2018, 06:11:48 PM
Вполне возможно.
Количество вкладок можно определять, допустим, по крестику "закрыть" у каждой из них (ведь если очень много вкладок, то их размеры меняются)
Делаете заготовку рисунка крестика,  через scanpictures находите их все. А дальше преобразуете пример из шаблона scanpicture, чтобы не просто наводил курсор на найденные картинки, но и кликал на несколько пикселей левее, дальше кликал на адресную строку, копировал, вставлял куда надо и жал клавиши (в общем, делал, что положено) - можно также  заставить его самостоятельно определять какую клавишу нажимать (F3, 4,5 или 10)(правда, удобнее через десятичные коды клавиш).

Кроме крестиков используется один сайт всегда, а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 01, 2018, 06:44:02 PM
Кроме крестиков используется один сайт всегда, а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
Думаю, всё получится)
К слову, если были бы разные сайты, но действовать надо с 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
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 01, 2018, 10:13:16 PM
Кроме крестиков используется один сайт всегда (Портал государственных закупок), а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
Думаю, всё получится)
К слову, если были бы разные сайты, но действовать надо с 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) поскольку клик идет на иконку сайта, то курсор может оставаться на месте)
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 01, 2018, 10:17:14 PM
Кроме крестиков используется один сайт всегда (Портал государственных закупок)
Ну ведь очередная-же провокация, нацеленная создать повод для закрытия форума!
Удалите эту тему вообще!!!
Что в моих комментариях вы нашли провокационного? То, что я работаю в сфере госзакупок? Этот факт разве пвлияет на закрытие форума? (Портал государственных закупок) стер в своем комментарии.
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 02, 2018, 12:17:03 AM
Спасибо большое!
Я с кликерами и вообще хоть с каким-то программированием знаком всего 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
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 02, 2018, 01:37:46 AM
Спасибо большое!
Я с кликерами и вообще хоть с каким-то программированием знаком всего 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 вкладку ни разу не нажал. В итоге появились сомнения в надежности поиска. Точность уменьшал, координаты проверял и менял.

И я вам очень благодарен за помощь) Чем вас отблагодарить?
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 02, 2018, 02:49:35 PM
>Создал тестовый скрипт для поиска картинок в этих же координатах. Их находит без проблем.

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).


>И я вам очень благодарен за помощь) Чем вас отблагодарить?
А не рано ли?) Ведь ещё не всё заработало как надо и не со всеми вопросами разобрались  :) 
Года полтора у меня был абсолютно нулевой уровень, но мне старожилы здорово помогали, иной раз терпеливо разжевывая очевидное. Так что в каком-то смысле моя помощь - это продолжение традиций из благодарности автору кликера, форуму и форумчанам за обучение и новые возможности (просто мне проще благодарить своим временем, кому-то - удобнее иначе))
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 02, 2018, 09:36:15 PM
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 раз больше!)
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 02, 2018, 10:08:51 PM
Заметил и то не сразу и не всегда. Пунктиром выделяет кнопку три полоски справа от вкладок (браузерная кнопка вызова меню самого браузера). Изначально она не входит в область для скрина. Она начинается от 1177, а у нас максимум 1058. Больше никаких движений нет. Прикрепляю в скрине. Красная жирная точка где..
Любопытно, получается у вас масштаб экрана не 100%, раз не совпадают координаты? Это многое может объяснить, попробуйте вернуть на 100%.
http://crapware.aidf.org/forum/index.php?topic=3629.msg24622#msg24622
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 02, 2018, 10:35:56 PM
Есть возможность попробовать другой сайт и другой ПК.

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

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

О результатах отпишусь вечером.
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 03, 2018, 05:11:32 PM
Есть возможность попробовать другой сайт и другой ПК.

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

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

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

P.S. Вариант без графического анализа уже опробован. Но опять же, с отключенной привязкой его надо, ну и вообще выяснить, двигается ли мышка и засчитываются ли нажатия клавиш. Кстати, у вас на том браузере смена вкладок через cntrl+tab работает?
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: dramster on December 03, 2018, 09:20:07 PM
Я может чегото недопонимаю, сильно не вникал в проблемму. Но вот мое видение того что вы пытаетесь решить.

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)

Да, видел в списке проблем, что ифпикчер находит, а сканпикчер не находит, это уже другой вопрос. Просто я обратил внимание именно на заострении внимания на ненахождении картинки  в незаскриненной области.
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 04, 2018, 08:32:58 AM
Я может чего-то недопонимаю, сильно не вникал в проблему. Но вот мое видение того что вы пытаетесь решить.
.....
Да, видел в списке проблем, что ифпикчер находит, а сканпикчер не находит, это уже другой вопрос. Просто я обратил внимание именно на заострении внимания на ненахождении картинки  в незаскриненной области.
Спасибо) Кстати, про сканпикчер не знала, у меня не глючил (ну или замечен не был).

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

Да, это должно помочь с поиском) Но все равно вопрос про то, почему не то заскринивается, остался.
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 05, 2018, 09:02:58 PM
Извиняюсь, что пропал.. Не было возможности протестировать на другом ПК. Протестировал в итоге. Проблемы те же.

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

Quote
Когда попробуйте, отпишитесь что написал в логах (если он увидел картинки).
Он не видит картинки.

Quote
P.S. Вариант без графического анализа уже опробован. Но опять же, с отключенной привязкой его надо, ну и вообще выяснить, двигается ли мышка и засчитываются ли нажатия клавиш.
Мышка нигде не двигается.

Quote
Кстати, у вас на том браузере смена вкладок через cntrl+tab работает?
Да.

Вообще я предлагаю проще сделать)
Просто копирование вкладок подряд, начиная со 2-й вкладки..
Просто я не знаю, как сделать так, чтобы он закончил копировать, когда закончится последняя вкладка.

2) Я не знаю, как сделать так, чтобы при нажатии по скриншоту, но при этом нажимался по координатам правее, левее, как поставлены координаты х и у. Подскажите пожалуйста, что нужно добавить?
Code: [Select]
GETSCREEN(0,0,400,400)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(300)
END_IF
Буду благодарен)
Вообще интересно, почему не получается и если вы ходите разобраться, почему, можно поэкспериментировать)
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Oraven on December 05, 2018, 10:07:40 PM
2) Я не знаю, как сделать так, чтобы при нажатии по скриншоту, но при этом нажимался по координатам правее, левее, как поставлены координаты х и у. Подскажите пожалуйста, что нужно добавить?
Code: [Select]
GETSCREEN(0,0,400,400)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(300)
END_IF

Кликер позволяет производить вычисления прямо в параметрах функций.

Code: (clickermann) [Select]
GETSCREEN(0,0,400,400)
IF_PICTURE_IN (0,0, 400,400, "file.bmp", -1, 100)
   LCLICK($_return1+20, $_return2+5) // клик правее на 20 пикселов и ниже на 5
   WAITMS(300)
END_IF
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 05, 2018, 10:37:49 PM
Ну значит пока пробуем второй вариант, без обработки графики.
Правда, если мышка не двигается и ничего не нажимается, это и будет нашей главной проблемой.
 Координаты кликов придется поправить. По умолчанию, запускайте когда находитесь на последней или первой вкладке. Если все ок, то сделав круг, он остановится (название первой обрабатываемой им вкадки должно быть уникальным, не повторяться).
После проверки скопируйте сюда лог (сайты можете поменять на условное нечто, ну или запросы гугл искать вместо нужного), будем думать, что дальше делать.
Code: (clickermann) [Select]
$site=google.com    //название вашего сайта
$log=1              // для проверки, движения, а не прыганья курсора мышки и отчета в логах =1, иначе - 0
/////////////////////////////////////////
$str=0              //не обязательно задавать переменные, но пусть будут)
$str1=0
SUB(click,$x,$y,$time)    //подпрограмма, для упрощения правки
   If($log=1)
      Print("click ",$x,"-",$y )
      move($x,$y)
      waitms(200)
   End_if
   LCLICK($x,$y)
   waitms($time)
end_sub

wait(2)

WHILE(1)                         //бесконечный цикл
   CLICK(896,190,50)  // клик по браузеру, чтобы горячие клавиши стали активны. Первые две цифры  -- координаты, третья - время, оставьте так
   waitms(200)
   KEYDOWN(#CTRL) //для большинства браузеров смена вкладки выглядит как кнтрл+таб, можно заменить на кнтрл+ф1-12, для вызова конкретной вкладки. Но если так сработает, прога будет универсальнее
   Waitms(30)
   KEYPRESS(#tab)
   Waitms(30)
   KEYUP(#CTRL)
   wait(1)
   FOR($a=0,$a<3)         // ну тут все просто - у меня не всегда срабатывает выделение с 1 клика, а с 3-ного гарантированно выделяет строку. Замените под себя.
      CLICK(778,65,20)
   END_CYC
   
   KEYDOWN(#CTRL)            //копировать выделенное
   KEYPRESS(#C)
   KEYUP(#CTRL)
   
   $str= FROMCLIP ()            //перенос скопированного из буфера в память кликера
   If($log=1)                 // запись в лог адреса ссылки, если лог=1
      Print("str: ",$str )
      waitms(200)
   End_if
   
   If($str1=0)                 // запоминание адреса первой проверяемой страницы
      $str1=$str
   Else
      If($str1=$str)          // если снова адрес совпадет с первым, значит прошли полный круг, и надо закрыть программу
         Print("All done")
         halt         //
      End_if
   End_if
   
   
   If(STRLEN($str)>0)       //если адрес скопировался и лежит в буфере
      If(STRPOS($str, $site)>0)    //если в адресе присутствует название нашего сайта
         CLICK(1200,200,200)           //Клик в приложении - поправьте координаты
       //CLICK(1200,200,200)           //Кажется там еще второй клик в приложении - поправьте координаты и уберите слеши перед клик
         KEYDOWN(#CTRL)               //Вставка
         KEYPRESS(#V)
         KEYUP(#CTRL)
      //   KEYPRESS(#enter)         // у меня энтер, т.к. проверялось на блокноте
      End_if
      Else
      Print("nothing")
   End_if
   wait(1)                  //большая задержка не обязательна, но пока правим, стоит ставить подобные, причем почаще: думаю, все кто пару раз запускали бесконечные циклы без задержек и автоматического завершения, а потом  вынуждены были останавливать работу через перезагрузку компа, завели подобную полезную привычку)
END_CYC
//halt
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: SimplY on December 09, 2018, 12:19:39 PM
Code: [Select]
Я пытался по разному. Цепляет от силы 2 вкладки. Максимум.
[code-clickermann]
$site=otc.ru    //название вашего сайта
$log=1              // для проверки, движения, а не прыганья курсора мышки и отчета в логах =1, иначе - 0
/////////////////////////////////////////
$str=0              //не обязательно задавать переменные, но пусть будут)
$str1=0
SUB(click,$x,$y,$time)    //подпрограмма, для упрощения правки
   If($log=1)
      Print("click ",$x,"-",$y )
      move($x,$y)
      waitms(200)
   End_if
   LCLICK($x,$y)
   waitms($time)
end_sub
 
wait(2)
 
WHILE(1)                         //бесконечный цикл
   CLICK(896,190,50)  // клик по браузеру, чтобы горячие клавиши стали активны. Первые две цифры  -- координаты, третья - время, оставьте так
   waitms(200)
   KEYDOWN(#CTRL) //для большинства браузеров смена вкладки выглядит как кнтрл+таб, можно заменить на кнтрл+ф1-12, для вызова конкретной вкладки. Но если так сработает, прога будет универсальнее
   Waitms(30)
   KEYPRESS(#tab)
   Waitms(30)
   KEYUP(#CTRL)
   wait(1)
   FOR($a=0,$a<1)         // ну тут все просто - у меня не всегда срабатывает выделение с 1 клика, а с 3-ного гарантированно выделяет строку. Замените под себя.
      CLICK(867,52,20)
   END_CYC
 
   KEYDOWN(#CTRL)            //копировать выделенное
   KEYPRESS(#C)
   KEYUP(#CTRL)
 
   $str= FROMCLIP ()            //перенос скопированного из буфера в память кликера
   If($log=1)                 // запись в лог адреса ссылки, если лог=1
      Print("str: ",$str )
      waitms(200)
   End_if
 
   If($str1=0)                 // запоминание адреса первой проверяемой страницы
      $str1=$str
   Else
      If($str1=$str)          // если снова адрес совпадет с первым, значит прошли полный круг, и надо закрыть программу
         Print("All done")
         halt         //
      End_if
   End_if
 
 
   If(STRLEN($str)>0)       //если адрес скопировался и лежит в буфере
      If(STRPOS($str, $site)>0)    //если в адресе присутствует название нашего сайта
         CLICK(171,753,200)           //Клик в приложении - поправьте координаты   
   
       CLICK(531,418,200)           //Кажется там еще второй клик в приложении - поправьте координаты и уберите слеши перед клик
         KEYDOWN(#CTRL)               //Вставка
         KEYPRESS(#V)
         KEYUP(#CTRL)
      //   KEYPRESS(#enter)         // у меня энтер, т.к. проверялось на блокноте
      End_if
      Else
      Print("nothing")
   End_if
   wait(1)                  //большая задержка не обязательна, но пока правим, стоит ставить подобные, причем почаще: думаю, все кто пару раз запускали бесконечные циклы без задержек и автоматического завершения, а потом  вынуждены были останавливать работу через перезагрузку компа, завели подобную полезную привычку)
END_CYC
//halt

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

В общем, спасибо Вам огромное!!!)
2) Я хотел бы сам поразбираться в коде. И ваше время неудобно забирать)

Единственное, что мне не понятно, как остановить Ctrl+Tab, если закончились вкладки? 1 сайт - это закрепленная вкладка с нашим сервисом. Совершенно другой домен. Остальные вкладки имеют один домен. Если вы скажете, как именно это сделать, чтобы Ctrl+Tab нажимался до 1 вкладки, код будет готов)

Я сам сейчас составлю небольшой код) Но я не умею делать так, чтобы он только 1 круг сделал)

У кликермана есть свой собственный буфер обмена? Я что-то не слышал об этом)
Title: Re: Копирование ссылок из вкладок браузера и вставка их в столбик. HELP!!!
Post by: Qwerry on December 09, 2018, 02:38:50 PM
> Я пытался по разному. Цепляет от силы 2 вкладки. Максимум.
 
В какой из версий - первой, с графикой или второй, без? Почему 2 вкладки? Совпадает ли у этих вкладок домен?  Выделяется ли после клика по адресной строке вся строка, или же только ее часть? Не является ли место, куда мы копируем, первой вкладкой, из-за чего последующий кнтрл+таб снова приводит к уже обработанной вкладке, отчего кликер пишет "all done" т.к. думает, что он сделал круг? Думайте, думайте, анализируйте...

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

> У кликермана есть свой собственный буфер обмена? Я что-то не слышал об этом)

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

> В общем, спасибо Вам огромное!!!)
2) Я хотел бы сам поразбираться в коде. И ваше время неудобно забирать)
Пожалуйста)
Но ведь уже поздно "не забирать время" - оно уже было потрачено на тот скрипт, и проверку его работоспособности с вариантом блокнота. И с тем, что вам не интересно почитать и понять, как он устроен (ведь комментарии я явно не для себя пишу), чтобы уже потом делать по аналогии свой - видимо, потрачено зря((


> Я сам сейчас составлю небольшой код) Но я не умею делать так, чтобы он только 1 круг сделал)

В комментариях отдельно описан момент, каким образом можно останавливаться после одного круга. Возможно есть и другие варианты, но надо сперва продумать логику остановки, а уж после пытаться выбирать и реализовать другой вариант.

А именно:
Code: (clickermann) [Select]
   If($str1=0)                 // запоминание адреса первой проверяемой страницы
      $str1=$str
   Else
      If($str1=$str)          // если снова адрес совпадет с первым, значит прошли полный круг, и надо закрыть программу
         Print("All done")
         halt         // завершение работы скрипта
      End_if
   End_if