Что нового

[Мышь, клавиатура] Привязка к координатам мыши

skalala

Новичок
Сообщения
2
Репутация
0
Всем привет!

Подскажите пожалуйста, если я делаю, чтобы мышь кликала по определённым координатам, которые мне window info выдаёт, то на других машинах, с другим разрешением экрана, мышь будет кликать туда же?
 

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Кликать будет так, как заданно в MouseClick(..)
 

scanfail

Знающий
Сообщения
244
Репутация
17
MouseCoordMode:
Устанавливает способ отсчёта координат используемый в функциях мыши, или абсолютные координаты или координаты относительно текущего активного окна:
0 = относительно координат активного окна
1 = абсолютное экранные координаты (по умолчанию)
2 = относительно координат клиентской области активного окна

Пример:
Код:
Opt("MouseCoordMode", 1)        ;1=абсолютные, 0=относительные, 2=клиентские
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
skalala [?]
мышь будет кликать туда же?
Да. Но!
Если у вас было изначально разрешение 1680х1050, и вы использовали MouseClick с координатами 1500х100, то при разрешении 1024х768 у вас естественно координаты будут лежать за приделами реальной области.
Как же быть?
Ну, сперва нужно включить в работу маленькие клеточки своего серого вещества, и понять, что рабочий стол Windows, по сути, является тем же окном. Поэтому, с ним можно работать через функции WinGetClientSize, WinGetPos и, следовательно, иметь актуальные данные для MouseClick ;)
Код:
#include <Array.au3>
$hWin = WinGetHandle("[CLASS:SysListView32]")
$aWin = WinGetClientSize($hWin)
_ArrayDisplay($aWin, "WinGetClientSize")
$aWin = WinGetPos($hWin)
_ArrayDisplay($aWin, "WinGetPos")
 

running-frag

why me?
Сообщения
441
Репутация
60
Так же можно задать чёткий width & height окну и работать с координатами под опцией.
Код:
Opt ("MouseCoordMode",		2)
 

Vagac

Новичок
Сообщения
14
Репутация
0
[Мышь, клавиатура] Re: [Мышь, клавиатура] Привязка к координатам мыши

Здравствуйте помогите пожалуйста разобратся с возможностью иметь актуальные кординаты для MouseClick при любом разрешении экрана как их высчитать я новичек в AutoIT и еще беда с буржуйским языком а в Русской справке не все есть к сожалению.
Если можно выложите пожалуйста пример с описанием по которому можно понять как правильно нужно находить актуальные кординаты для MouseClick.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Vagac,

AotuIt тут ни при чём (русская справка и буржуйский язык тоже).
Сначала ТЫ должен разработать алгоритм - как нужно менять координаты клика при изменении разрешения экрана.
А потом уже возникнет задача этот алгоритм запрограммировать на AutoIt или другом ЯП.

Запускай свою игрушку на разных разрешениях экрана, делай скриншоты, анализируй, думай...
 

Vagac

Новичок
Сообщения
14
Репутация
0
Ответ конечно интересный "анализируй думай" я бы не обратился на форум за помощью если бы не пытался сам достаточно долгое время решить эту задачу самостоятельно но так ни к чему и не пришел.
Ну к примеру стандартными функция можно получить текущее разрешение монитора, частоту обновления, битность цвета.
@DesktopWidth
@DesktopHeight

Потом разделить @DesktopWidth на @DesktopHeight получить коэффициент но что дальше делать мне не понятно так как при одинаковом разрешении допустим 1280х1024 коэффициент=1,25 но дело в том что мониторы разные 21 по диагонали и 17 а как получить поправку на диагональ монитора я не знаю.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Сама по себе диагональ монитора ни на что не влияет.
Координаты клика для разрешения допустим 1280х1024
будут абсолютно одинаковы как для монитора с диагональю 21, так и для мониоора с диагональю 17
 

Vagac

Новичок
Сообщения
14
Репутация
0
Да нет уважаемый C2H5OH именно координаты как раз и отличаются

Вот координаты клика для монитора 21
Position: 482, 691

А вот для монитора 19
Position: 482, 711

при разрешени экрана на обоих 1280х1024 32бит 60герц
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Vagac, так не бывает.

Сделай скриншоты на обоих мониторах, открой их хотя бы в том же Paint и сравни пиксели в указанных тобой точках.
А ещё лучше подтяни к одному компу оба монитора подключай то один, то другой и позапускай свой скрипт.
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
Vagac [?]
именно координаты как раз и отличаются
Не может этого быть. При одинаковом разрешении на разных диагоналях только геометрия искажается - круги становятся эллипсами, квадраты - прямоугольниками и т.д. Причём это видит человек, а для компьютера круг всё равно круг.
Где-то что-то вы неправильно измеряете...
 

Vagac

Новичок
Сообщения
14
Репутация
0
Я находил кординаты пикселей с помощью AutoIt Window Info

Сейчас еще раз попробывал результат тот же для монитора 21
Position: 482, 691
Cursor ID: 0
Color: 0xE6EAEA

Для монитора 19
Position: 482, 711
Cursor ID: 0
Color: 0xE6EAEA

Компы разные разрешение на обоих мониторах 1280х1024 32б 60г

На обоих компах конфигурация одинаковая за исключением видео карты
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
Это экранные координаты? Или относительно окна/клиентской области?
Хорошо бы оба скриншота увидеть...
 

Vagac

Новичок
Сообщения
14
Репутация
0
Как сюда скрины выложить


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

Вот положил сюда скрины http://yadi.sk/d/umSVIoIZ89cwi


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

Если опцию в настройках AutoIt Window Info CordMode выбрать другую результат такойже
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
Во-первых, у Мозиллы нет клиентской области - она вся одно окно. А на ваших скриншотах даже без измерений видно, что текст страницы на мониторе 21 находится ниже, чем на мониторе 19 из-за разного расположения вкладок.
Во-вторых, на мониторе 21 у Мозиллы ещё и внизу панель. Поэтому страница масштабируется по другому и текст ещё больше "съезжает".
Т.е. для начала одинаково сконфигурируйте Мозиллу.
 

Vagac

Новичок
Сообщения
14
Репутация
0
Ок извините сейчас попробую


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

Да действительно Вы правы на обоих мониторах при одинаковом разрешении и цвет пикселя и координаты одинаковые спасибо и извините меня за невнимательность но ведь сам бы я этого не заметил.
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
OffTopic:
Vagac [?]
Посоветуйте что использовать?
Internet Explorer. На форуме много примеров автоматизации без необходимости "клацать мышкой из скрипта".
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Vagac [?]
Но тогда встает другой вопрос
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


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

Vagac

Новичок
Сообщения
14
Репутация
0
Господа ну что мне так и не поможет ни кто я даже не понимаю в каком направлении копать ведь есть формула по которой это вычисляется вот сидел сегодня всю ночь занимался перемножением делением но так и не понял что надо делать.
Ну не силен я в математике плохо в школе учился и очень давно это было.
Ведь можно же формулу написать если она есть конечно я же не прошу готовый код. :whistle:
 
Верх