Что нового

Клик мыши происходит НЕ по заданным координатам при малом MouseClickDelay

las6

Новичок
Сообщения
9
Репутация
0
Здравствуйте!
в скрипте такая ситуация: есть список координат, по всем координатам нужно кликнуть и желательно побыстрее)
если в
Код:
Opt("MouseClickDelay", delay)
Opt("MouseClickDownDelay", delay)

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

Почему так происходит и как это исправить?
 

ArvenPK

Новичок
Сообщения
14
Репутация
1
las6 сказал(а):
Почему так происходит и как это исправить?
Приведите пример лагающего кода. У меня даже при delay==0 клики отрабатывают корректно.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Да, есть такая проблема. :(

Почему так происходит и как это исправить?

Происходить это потому что в функции
Код:
MouseClick

сам клик происходит до того как мышь закончила перемещение на указанные координаты.

Чтобы исправить ситуацию, я, как и раньше http://autoit-script.ru/index.php?topic=12326.msg79680#msg79680
посоветовал бы разделить действие на два вызова
Код:
MouseMove($x, $y)
  MouseClick('LEFT', $x, $y)
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
C2H5OH [?]
клик происходит до того как мышь закончила перемещение
Эксперимент. Запускаю mspaint.exe (Win7 x86), разворачиваю окно. Выбираю карандаш, красный цвет. Запускаю скрипт
Код:
Opt("MouseClickDelay", 0)
Opt("MouseClickDownDelay", 0)
WinActivate("[class:MSPaintApp]")
Sleep(100)
For $j = 0 To 99
  For $i = 0 To 9
    MouseClick("left", 100 + 30 * $i, 200 + 30 * $i, 1, 0)
  Next
Next
Тысяча кликов и ровно десять красных точек. Если бы клик был раньше перемещения, то точек было бы больше.

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

las6

Новичок
Сообщения
9
Репутация
0
C2H5OH сказал(а):
Происходить это потому что в функции
Код:
MouseClick

сам клик происходит до того как мышь закончила перемещение на указанные координаты.

я посоветовал бы разделить действие на два вызова

дадада, так и кажется как будто не доводит, а нажимает, но т.к. скорость 0 перемещение же мгновенное должно быть, из за этого не совсем понятно почему так
по вашему совету попытался разделить на 2 действия, но изменений не произошло(((


Добавлено:
Сообщение автоматически объединено:

InnI сказал(а):
Эксперимент.

Возможно, проблема связана с конкретной программой

не знаю почему так, но в пеинте и у меня все нормально работает, какие бы я там экперименты не ставил

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
las6,
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 
Верх