Author Topic: как распознать указатель мыши, GETSCREEN не помощник  (Read 3844 times)

0 Members and 2 Guests are viewing this topic.

algirdas

  • Освоившийся
  • **
  • Posts: 35
    • View Profile
В заданной точке необходимо опознать тип знака мышки, не "лапка " ли это, и в случае положительного исхода выполнить необходимое действие. Процедура GETSCREEN делает фото области убирая изображение мыши,  дальше анализировать нечего. Как выйти из ситуации ?
Может в дальнейшем при возможной модификации GETSCREEN для работы с массивами (сейчас это не работает) предусмотреть и пятый параметр - разрешение снимка с изображением указателя мышки ? И вообще запись GETSCREEN(M)
несколько симпатичней GETSCREEN(a, b, c, d).

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Системная переменная $_cursor Содержит код вида указателя мыши

Атеист

  • Guest
[spoiler=Re: как распознать указатель мыши, GETSCREEN не помощник][/spoiler]

Code: (clickermann) [Select]
WHILE(1)
   LOGWRITE ($_cursor)
   WAITMS(500)
END_CYC

algirdas

  • Освоившийся
  • **
  • Posts: 35
    • View Profile
Спасибо за науку. Вопрос закрыт.

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
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
« Last Edit: August 21, 2017, 10:15:24 AM by Cleoss »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Вот у тебя привычка задом наперед все делать. Зачем работать методом исключения если известно что конкретно нужно. И еще нужно понимать что такое бесконечный цикл. Допиливаю твой вариант. Тоже самое, но без лишних движений. У меня коды курсора другие, и есть загрузка (кружочек кружится) с четвертым кодом. А если учитывать всякие стрелки при перетягивании или изменении размеров окна, то их штук 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
« Last Edit: August 21, 2017, 10:41:14 AM by open_78 »

algirdas

  • Освоившийся
  • **
  • Posts: 35
    • View Profile
Подсмотрел у других и как-то так. На разных машинах и системах код лапки разный, пришлось ввести начальное присвоение и дополнительную глобальную переменную для кода указателя на конкретной машине.
#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