Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "MouseClickDrag", в содержании - "Mouse Control" - "MouseClickDrag", v1.0.46.03.

Ник переводчика: YMP.

Настоящее имя переводчика: Юрий Попов.

MouseClickDrag

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

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

Параметры

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

Чтобы автоматически компенсировать возможную взаимозамену пользователем левой и правой кнопок мыши через панель управления операционной системы, вместо 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

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.