Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Qwerry

Pages: [1] 2 3 ... 8
1
Общие вопросы / Re: Передвинуть экран
« on: February 28, 2019, 11:27:55 AM »
И еще вопросик.Надо несколько цветов пикселей найти поочередно на экране.Такой формат подойдет?
 IF_PIXEL(x,y,color,color)
И как это будет работать?Сначала первый колор,потом второй(если не найдет первый)?

Ну как гласит справка, формат там вот такой:
Quote
Синтаксис
IF_PIXEL_IN (x, y, x2, y2, color1, ...)
...
END_IF

Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
color1, ... - цвета, поиск которых будет осуществляться

Возвращаемые параметры
$_return1 - x координата найденного пикселя
$_return2 - y координата
После четырех координат, обозначающих область, может быть указано практически любое количество цветов ("добавление каждого цвета увеличивает длительность анализа на 100%", т.е. поиск происходит поочередно).

По поводу первого вопроса - обнуляй переменную (в начале цикла).
Quote
Синтаксис

FOR ($var [=value], expression, [step] )
...
END_CYC
В твоем случае это будет так:
FOR ($i=0, $i<2)
FOR ($q=0, $q<4)

2
Общие вопросы / Re: Цикличность части кода
« on: February 11, 2019, 10:31:21 AM »
Шаблоны>Циклы,условия >FOR

Например, 5 раз кликнуть,  после чего продолжать бы выполнять код дальше.
Code: (clickermann) [Select]
FOR($a=0,$a<5)
LCLICK(10,10)
WAITMS(500)
END_CYC

3
А через оператор switch вам не проще будет? Раз уж один и тот же пиксель проверяете и путаетесь с условиями.

Структура примерно вот так будет выглядеть:

Code: (clickermann) [Select]
GETSCREEN
$col=PXL(401,307)
print($col)
SWITCH($col)
   CASE(2434492)// красный  383 314 2434492

 LCLICK(401,307)
      WAITMS(20)
      LOGWRITE ("глюк1")

   CASE(1651782)// желтый  379 314 1651782
/// свои действия
      WAITMS(30)
   CASE(5782045)// синий    380 389 5782045
///свои действия
   CASE(1655835)// зеленый  378 313 1655835
///свои действия
DEFAULT
Print("---no cols----")
END_SWITCH
WAITMS(30) //задержка между операциями

Естественно, если в скрипте что-то еще надо - то лучше цикл создать через  for или while.

4
Ну у бота ведь какие-то переменные есть? Вот и держите их тогда во внешнем блокнотике: пусть туда записывает их и оттуда же берет. Тогда при запуске он будет знать, на чем остановился перед закрытием проги.


Если же прогу не закрываете, то по сути пауза кликермана должна бы помочь. Ну или играйтесь с паузами в потоках. Но с блокнотом проще)

5
Насчет возможности просто где-то циферки написать - и чтоб всё само перенастроилось, не знаю, есть ли возможность.

А так можно везде  использовать относительные координаты (не "100,200" а " $xstart+100,  $ystart+200"). Т.е. допустим, привязываете к какой-то точке (или через поиск картинки - что надежнее, т.к. каждый раз одинаково кликнуть вы не сможете) и переделываете все координаты как точку отсчета +/- какое-то значение.
У меня для удобства вот такая подпрограмма, чтобы вручную не высчитывать координаты квадратов. Надо просто следовать инструкции в логах и после копировать результаты вместо координат х1,у1,х2,у2.

Code: (clickermann) [Select]
SUB(координаты,$name,$num)
   WAITMS(300)
   $xxxxx=GETVAR (STRCONCAT("$x",$name)) // если картинка не была найдена, будет сообщение об интерпретации строки - игнорируем
   $yyyyy=GETVAR (STRCONCAT("$y",$name)) //если картинка не была найдена, будет  сообщение об интерпретации строки - игнорируем
   Print ($name," отчет от ", $xxxxx,"-",$yyyyy)
   Print ("SHIFT для подтверждения, клик для смены")
   WHILE(iskeydown(#SHIFT )=0)
      If(iskeydown(1)=1)
         while(iskeydown(1)=1)
            waitms(10)
         End_cyc
         $xxxxx=$_return1
         $yyyyy=$_return2
         Print ($xxxxx,"-",$yyyyy)
      End_If
   END_CYC
   Print ("отчет от ", $xxxxx,$yyyyy)
   WAITMS(200)
   FOR($a=0,$a<$num) // повторяем N раз
      WAITMS(100)
      Print ("1 кликните и нажмите ALT")
      WHILE(iskeydown(#ALT )=0)
         IF(iskeydown(1)=1)
            while(iskeydown(1)=1)
               waitms(10)
            End_cyc
            $xxx1=$_xmouse
            $yyy1=$_ymouse
            Print ("1 ",$xxx1,$yyy1 )
         END_IF
      END_CYC
      Print ("2 кликните и нажмите ALT")
      WAITMS(300)
      WHILE(iskeydown(#ALT )=0)
         IF(iskeydown(1)=1)
            while(iskeydown(1)=1)
               waitms(10)
            End_cyc
            $xxx2=$_xmouse
            $yyy2=$_ymouse
            Print ("2 ",$xxx2,$yyy2 )
         END_IF
      END_CYC
      WAITMS(100)
     
      Print("записываю относительные координаты квадрата ", $a+1)
     
      $xx1= $xxx1-$xxxxx
      $yy1= $yyy1-$yyyyy
      $xx2= $xxx2-$xxxxx
      $yy2= $yyy2-$yyyyy
     
      If ($xx1>0)
         $xx1= STRCONCAT("+",$xx1)
      END_IF
      If ($yy1>0)
         $yy1= STRCONCAT("+",$yy1)
      END_IF
      If ($xx2>0)
         $xx2= STRCONCAT("+",$xx2)
      END_IF
      If ($yy2>0)
         $yy2= STRCONCAT("+",$yy2)
      END_IF
      $stroka=strconcat("$x", $name, $xx1, ",$y",$name,$yy1, ",$x", $name, $xx2, ",$y",$name,$yy2)
      print($stroka)
      WAITMS(100)
   //   print("save")
    //  SCREENSHOTEX($xxx1,$yyy1, $xxx2,$yyy2, $stroka, 0)
   END_CYC
END_SUB


   GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "start.bmp", -1, 90)  // название картинки, по которой будет осуществляться привязка
      print("start+")
      $xstart=$_return1  // собственно названия точки отсчета
      $ystart=$_return2 //собственно названия точки отсчета
       Else
      Print("-")
   End_if
////////// вызов подпрограммы ////////////////////////////////////////
     координаты("start",1)  /// запуск подпрограммы - отсчет от найденной картинки, если нашли и подтвердили кнопкой SHIFT. Если не найдено или же решили от другого места - сперва клик, потом SHIFT. В кавычках наименование начальной координаты (картинки) от которой ищем относительные координаты, цифра - количество квадратов, координаты которых надо заменить на относительные.
 halt

6
Ошибки / Re: залипает SHIFT
« on: December 12, 2018, 11:39:05 AM »
Если вы на 100% уверены, что дело в зажатой клавише shiftа, то команда  KEYUP(#SHIFT) полностью решит вашу проблему.
Однако, ввиду того, что большинство используют поиски картинок и жмут на ссылки, но ни у кого кнопки не залипают, то вероятно следовало бы или внимательно посмотреть свой код (если все-же используете нажатия клавиш) или вручную повторить действия кликера (вплоть до места клика) там, где он открывает ссылку в новом окне. Некоторые конкретные страницы имеют ссылки, которые по умолчанию открываются в новом окне.
И до тех пор, пока не доказано, что дело именно во внезапно залипшей клавише, возникающей в одной из версий кликера, а не вашем коде/настройках страниц, браузера и т.д., лучше создавать подобные темы в разделе Общие вопросы.    ;)

7
> Я пытался по разному. Цепляет от силы 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

8
Ну значит пока пробуем второй вариант, без обработки графики.
Правда, если мышка не двигается и ничего не нажимается, это и будет нашей главной проблемой.
 Координаты кликов придется поправить. По умолчанию, запускайте когда находитесь на последней или первой вкладке. Если все ок, то сделав круг, он остановится (название первой обрабатываемой им вкадки должно быть уникальным, не повторяться).
После проверки скопируйте сюда лог (сайты можете поменять на условное нечто, ну или запросы гугл искать вместо нужного), будем думать, что дальше делать.
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

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

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

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

10
Есть возможность попробовать другой сайт и другой ПК.

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

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

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

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

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

12
>Создал тестовый скрипт для поиска картинок в этих же координатах. Их находит без проблем.

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


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

13
Спасибо большое!
Я с кликерами и вообще хоть с каким-то программированием знаком всего 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

14
Кроме крестиков используется один сайт всегда, а первые две вкладки закреплены и не используются в копировании. Поэтому можно искать по значку сайта) Буду пробовать)
Думаю, всё получится)
К слову, если были бы разные сайты, но действовать надо с 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

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

Pages: [1] 2 3 ... 8