Нужна помощь в написании скрипта? Close

Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.

ВконтактеГруппа Вконтакте Электронная почтаЭлектронная почта Личная страницаСимаков Яков ВК
home icon Все разделы
comunity icon Нужна помощь?

MouseClickDrag -Autohotkey

Перетаскивание мышью. Нажимает указанную кнопку в месте, заданном начальными координатами, и, удерживая её, перемещает мышь в заданное конечными координатами место и там отпускает кнопку.

MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]

Параметры

WhichButton Имя кнопки. Возможные значения: Left (левая), Right (правая), Middle (средняя), X1 (четвёртая), X2 (пятая). У первых трёх вместо полного имени можно указывать только первую букву (L, R, M).

Чтобы автоматически компенсировать возможную взаимозамену пользователем левой и правой кнопок мыши через панель управления операционной системы, вместо MouseClickDrag нужно использовать команду Click.
X1, Y1 Начальные координаты (могут быть выражениями). Мышь будет перемещена в эту точку перед тем как будет нажата кнопка. Координаты считаются относительно активного окна, если только это не было изменено командой CoordMode. Если опущены, используются текущие координаты курсора.
X2, Y2 Конечные координаты (могут быть выражениями). В этой точке кнопка будет отпущена. Координаты считаются относительно активного окна, если только это не было изменено командой CoordMode.
Speed Скорость движения мыши (может быть выражением). Возможные значения: от 0 (быстро) до 100 (медленно). Если 0, мышь перемещается мгновенно. Если опущен, используется скорость по умолчанию 2, либо скорость, установленная командой SetdefaultMouseSpeed.

Параметр Speed игнорируется для режимов SendInput и SendPlay, они перемещают мышь мгновенно (хотя команда SetMouseDelay имеет параметр, влияющий на SendPlay). Чтобы движения мыши выглядели медленными (например, для скрипта, выполняющего демонстрацию для аудитории) используйте SendEvent {Click 100, 200} или SendMode Event (возможно, в сочетании с BlockInput).
R Относительность координат. Возможное значение: R. Если задан, начальные координаты трактуются как смещения от текущего положения курсора, а конечные - как смещения от начальных. Отрицательные значения координат задают смещение влево (ось Х) и вверх (ось Y).

Пример ниже смещает курсор на 5 пикселов вправо и вниз, нажимает левую кнопку и, удерживая её, двигает курсор на 10 пикселов вправо и вниз, где отпускает кнопку:
MouseClickDrag, Left, 5, 5, 10, 10, , R

Примечания

Эта команда использует метод посылки, задаваемый командой SendMode.

Перетаскивание также можно осуществлять различными вариантами команды Send. Это более гибкий метод, т.к. режим посылки может быть задан через имя команды. Например:

SendEvent {Click 6, 52, down}{click 45, 52, up}

Другое преимущество указанного метода состоит в том, что в отличие от команды MouseClickDrag он автоматически компенсирует возможную взаимозамену пользователем левой и правой кнопок через панель управления операционной системы.

Режим посылки SendPlay может успешно генерировать события мыши в большем числе игр, чем другие режимы. Однако перетаскивание в режиме SendPlay может не работать в контролах RichEdit (и, возможно, в других), таких как в WordPad и Metapad.

Некоторые приложения и игры затрудняются отслеживать движения мыши, если она движется очень быстро. В этом случае можно использовать команду SetdefaultMouseSpeed для замедления скорости перемещения мыши (но только для режима SendEvent).

Команда BlockInput может использоваться для предотвращения помех генерируемым событиям мыши со стороны реальных движений и щелчков мыши, производимых в это время пользователем. Однако это не требуется для режимов SendInput и SendPlay, т.к. в этих режимах действия пользователя запоминаются и выполняются позже.

После каждого нажатия и каждого отпускания кнопки мыши автоматически делается пауза (за исключением режима SendInput). Эта пауза также присутствует после каждого шага при движении мыши во время перетаскивания. Используйте команду SetMouseDelay для изменения длины этой паузы.

Примеры

MouseClickDrag, left, 0, 200, 600, 400 ; Код ниже открывает MS Paint и рисует в нём домик: Run, mspaint.exe WinWaitActive, ahk_class MSPaintApp,, 2 if ErrorLevel return MouseClickDrag, L, 150, 250, 150, 150 MouseClickDrag, L, 150, 150, 200, 100 MouseClickDrag, L, 200, 100, 250, 150 MouseClickDrag, L, 250, 150, 150, 150 MouseClickDrag, L, 150, 150, 250, 250 MouseClickDrag, L, 250, 250, 250, 150 MouseClickDrag, L, 250, 150, 150, 250 MouseClickDrag, L, 150, 250, 250, 250
Автор перевода: YMP
Настоящее имя переводчика: Юрий Попов
Источник: http://www.script-coding.com/AutoHotkey/MouseClickDrag.html
Под редакцией ahk-wiki.ru от 21.08.19