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

Основной раздел => Общие вопросы => Topic started by: algirdas on August 17, 2017, 08:35:34 PM

Title: как распознать указатель мыши, GETSCREEN не помощник
Post by: algirdas on August 17, 2017, 08:35:34 PM
В заданной точке необходимо опознать тип знака мышки, не "лапка " ли это, и в случае положительного исхода выполнить необходимое действие. Процедура GETSCREEN делает фото области убирая изображение мыши,  дальше анализировать нечего. Как выйти из ситуации ?
Может в дальнейшем при возможной модификации GETSCREEN для работы с массивами (сейчас это не работает) предусмотреть и пятый параметр - разрешение снимка с изображением указателя мышки ? И вообще запись GETSCREEN(M)
несколько симпатичней GETSCREEN(a, b, c, d).
Title: Re: как распознать указатель мыши, GETSCREEN не помощник
Post by: open_78 on August 17, 2017, 09:35:04 PM
Системная переменная $_cursor Содержит код вида указателя мыши
Title: Re: как распознать указатель мыши, GETSCREEN не помощник
Post by: Атеист on August 17, 2017, 09:38:48 PM
[spoiler=Re: как распознать указатель мыши, GETSCREEN не помощник](https://s8.hostingkartinok.com/uploads/images/2017/08/b33be3e4983940f57b027107e389cf66.png) (https://hostingkartinok.com/show-image.php?id=b33be3e4983940f57b027107e389cf66)[/spoiler]

Code: (clickermann) [Select]
WHILE(1)
   LOGWRITE ($_cursor)
   WAITMS(500)
END_CYC
Title: Re: как распознать указатель мыши, GETSCREEN не помощник
Post by: algirdas on August 18, 2017, 08:03:27 PM
Спасибо за науку. Вопрос закрыт.
Title: Re: как распознать указатель мыши, GETSCREEN не помощник
Post by: Cleoss on August 21, 2017, 10:09:31 AM
Code: (clickermann) [Select]
WHILE(1)
   LOGWRITE ($_cursor)
   WAITMS(500)
END_CYC

Чуть допилил скрипт, теперь он игнорирует при выводе стандартный вид курсора и текстовый курсор (к сожалению, курсор принимает вид текстового ($_cursor=7) и при наведении на обычный текст в браузере, и при наведении на весьма полезные поля форм ввода). В браузере на обычной странице я обнаружил только три вида курсора (текст, дефолтная стрелка, рука над ссылкой\кнопкой).

Code: (clickermann) [Select]
#name "cursorz"

define($init)
if ($init=0)
   logclear
   inc($init)
end_if

WHILE(1)
if (($_cursor!5)&($_cursor!7)) // 5 default 7 text 33 hand
LOGWRITE ($_cursor)
   WAITMS(500)
LOGWRITE ("###")
end_if
   WAITMS(500)
END_CYC
Title: Re: как распознать указатель мыши, GETSCREEN не помощник
Post by: open_78 on August 21, 2017, 10:27:46 AM
Вот у тебя привычка задом наперед все делать. Зачем работать методом исключения если известно что конкретно нужно. И еще нужно понимать что такое бесконечный цикл. Допиливаю твой вариант. Тоже самое, но без лишних движений. У меня коды курсора другие, и есть загрузка (кружочек кружится) с четвертым кодом. А если учитывать всякие стрелки при перетягивании или изменении размеров окна, то их штук 15 наберется.
Code: (clickermann) [Select]
#name "cursorz"

logclear

WHILE(1)
   if ($_cursor=33) // 5 default 7 text 33 hand
      LOGWRITE ("Лапка")
      WAITMS(500)
      LOGWRITE ("###")
   end_if
   WAITMS(500)
END_CYC
Title: Re: как распознать указатель мыши, GETSCREEN не помощник
Post by: algirdas on August 22, 2017, 06:44:19 PM
Подсмотрел у других и как-то так. На разных машинах и системах код лапки разный, пришлось ввести начальное присвоение и дополнительную глобальную переменную для кода указателя на конкретной машине.
#name "set_mouse_point"

LOGSHOW(1)
print("Начальная установка")
print("Наведите мышкой'лапку'на обьект и нажмите'ALT+D' ")
WAITMS(50)
 WHILE(ISKEYDOWN(#ALT)=0)
   WHILE(ISKEYDOWN(#D)=0)
  $v = $_cursor
      WAITMS(50) 
   END_CYC
   WAITMS(50)
END_CYC
print("ОК,код'лапки'=",$v )
 
//=============================================
 work, вычисляем $ax, $ay   
//=============================================

$ax = 1210
$ay = 170

MOVE($ax,$ay)
IF($_cursor = $v )
BEEP(800,200)
LCLICK($ax,$ay)
END_IF

//
//

halt