Как сделать остановку скрипта ahk

Добавил пользователь Alex
Обновлено: 05.10.2024

И в самом деле, большинство украинских компаний используют дорогие, тяжеловесные и престижные продукты Rational, Mercury или Borland, в то время как бесплатный, компактный и open-source AutoHotKey не попадает в поле зрения украинских test automation инженеров.

Цель этой заметки — восполнить этот пробел и кратко рассказать об основных возможностях программы и сфере ее использования.

Для чего можно использовать AutoHotKey?

Благодаря такому подходу AutoHotKey не имеет полнофункциональной IDE—оболочки и специализированных библиотек или компонент (например для работы с тест—планами и наборами тестов), но это компенсируется богатыми возможностями продукта и легкостью в использовании и настройке.

AutoHotKey состоит из нескольких компонентов:

Для целей автотестирования, наиболее часто используются следующие функции языка AutoHotKey:

Если какая-либо нужная функциональность отсутствует, есть возможность вызывать функции из DLL — как стандартные Windows API функции, так и написанные вами. Еще один способ дополнить базовую функциональность — скачать С++ исходники и написать собственный вариант AutoHotKey.

Тестируем калькулятор

В качестве демонстрации работы AutoHotKey напишем скрипт, который запускает калькулятор, делит 9 на 2 и закрывает окно калькулятора. Текст скрипта с комментариями приведен ниже.

Чтобы запустить скрипт на вашем компьютере, необходимо установить AutoHotKey, записать приведенный выше пример в текстовый файл с расширением .ahk и запустить его двойным щелчком мыши.

Заключение

Несмотря на бесплатность, AutoHotKey поставляется с достаточно подробной документацией (на английском), где можно найти описание всех поддерживаемых команд и возможностей инструментов. Поддерживается форум, где можно задать вопрос опытным пользователям, найти дополнительные библиотеки, внести предложения по улучшению продукта.

AutoHotKey активно развивается, регулярно появляются новые версии (последняя вышла 28 августа 2007) и ищет новых пользователей и поклонников, в том числе и в Украине.

В избранное В избранном 0

Похожие статьи


21 комментарий

Да, его я тоже посмотрел, но ведь с его с помощью просто записываются, а после выполняются скрипты, а ведь мне нужно отслеживать, какие из них отработали верно, а какие нет. Так что мне все равно придется хоть немножко да вникать в АНК.)) Я в общем-то и не против;)

Самый простой вариант быстро автоматизировать требуемую функциональность и при этом глубоко не вникать в особенности AutoHotKey и нестандартного UI — возпользоваться генератором AHK скриптов AutoScriptWriter.exe, который поставляется вместе с AutoHotKey.Из документации: Although macros can be written by hand, you might find it easier to write long ones with the aid of AutoScriptWriter, which is a macro recorder included with AutoHotkey. It watches what you type and where you click, and keeps track of which window is active. It transcribes these actions into a working macro that can later be “played back” at a faster speed.

. сначала стоит отметить, что я совсем чайник (Передо мной стоит задача протестировать GUI одного приложения. У меня есть список багов, для которых я и дожен создать авто-тесты. один из своих вопросов я уже задал. Подскажите, пожалуйста, а как я могу узнать координаты ячейки? Т.е., у меня в окне есть табличка TAdvStringGrid, в которую я хочу вносить значения. пытался узнать координаты ячейки с помощю Activ Window Info, но там не могу найти такой информации ((

Скрипты во многом похожи на маленькие программы; они запускают серию команд и могут принимать ввод от пользователя. В основном они используются для автоматизации повторяющихся задач. Скрипты AutoHotKey имеют широкий спектр применения. От чего-то простого, например переназначения ключей, до более сложных операций, таких как переименование и / или перемещение файлов и создание каталогов, сценарии вполне способны. Они не заменяют пакетные сценарии, но имеют свою собственную нишевую функцию и популярны в Windows.

Упаковать сценарий AHK как EXE

Преобразование .ahk в .exe с помощью AutoHotKey

Сценарии AutoHotKey несложно запускать, и приложение не сложно установить, но их может быть проще запустить как исполняемый файл.


Исходный файл сценария останется нетронутым, и у вас будет новый EXE-файл.

Скрипт AHK как EXE — Командная строка

Вам не нужно использовать Convert .ahk to .exe для упаковки сценария AHK как EXE. Вы можете использовать командную строку, но вам все равно нужно установить AutoHotKey.

  1. Открыть Командная строка.
  2. Введите следующую команду, чтобы перейти к инструменту компилятора в папке установки AutoHotKey.
  1. Найди полный путь к скрипту AHK.
  2. Введите следующее команда для преобразования скрипта и замените MyScript.ahk полным путем к сценарию.

Пример


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

В обоих вышеупомянутых методах вы используете встроенный инструмент преобразования AutoHotKey. Разница между ними заключается в том, как вы используете его для преобразования сценария, т. Е. Через графический интерфейс или командную строку.

Вывод

Преобразование скрипта в исполняемый файл не делает его более или менее функциональным. Исполняемый файл поддерживается более широко; приложения автоматизации с большей вероятностью смогут запускать исполняемый файл, чем сценарий. Сценарии AutoHotKey распространены, но они не так распространены, как пакетные сценарии или сценарии bash, поэтому они с меньшей вероятностью будут поддерживаться приложениями автоматизации.

Часто хочется автоматизировать что-то так, чтобы посылать нажатия и клики прямо в свёрнутое окно. Пришло время сделать это, на AutoHotkey.

Что тут происходит?

Основная логика на F4, то есть в clicker_heroes_background_spam() .

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

Для примера, вот так я пользовался в World of Warcraft, чтобы просто держать кнопку скила (1, файрбол на маге) и чтобы он сам кастовался. Когда в нужный момент мне было необходимо моментально скастовать моментальный файрбласт (хоткей Alt+1), я просто не отпуская 1 до-зажимал Alt, режим не обращает внимания на модификаторы, поэтому теперь в игру начинал прилетать зажатый хардверно Alt и тот же самый спам 1, спел кастовался. Очень удобно. Топ дпс все дела, просто зажав и не отпуская одну кнопку ) Там ещё макросы внутри игры помогали, чтобы, если надо, в эту одну кнопку более-менее умную ротацию заклинаний встроить.

[FAQ] Autohotkey (горячие клавиши) B0725264fd69

Программа Autohotkey позволяет выполнять действия нажатием клавиши или комбинацией клавиш, кроме того позволяет выполнить несколько действий нажатием одной клавиши.
Скрипты (бинды) пишутся в текстовом файле формата .ahk, где указывается кнопка и её функция.
Для того что бы создать бинд, после установки программы, кликаем правой кнопкой мыши на пустом месте рабочего стола, или в любой папке, далее выбираем создать и Autohotkey Script.
Для того что бы редактировать готовый бинд необходимо нажать правой кнопкой мыши и выбрать "Edit Script".

Например, если запустить этот скрипт, при нажатии на кнопку home будет набрано слово hello.
Код:
home:: send, hello

Т.е что бы забиндить фразу на ctrl и букву A:
Код:
^a:: send, hello

Что бы текст набирался моментально, на windows XP нужно использовать sendplay вместо send, на windows 7 и vista - sendinput вместо send.

Для того что бы забиндить несколько фраз на одну кнопку необходимо использовать задержку sleep после которой идёт значение задержки в миллисекундах (1000 - 1 секунда), 1й идёт срока с кнопкой, со следующей строки пишем действие, заканчиваться всё это должно командой end или return.

Код:
!b::
sendplay, Здравствуйте, меня зовут Кенджи
sleep 1100
sendplay, /me улыбнулся
exit

В этом случае при нажатии alt и b будет введено и отправлено две фразы в чат, после первой фразы будет задержка на 1.1сеунду, что позволит обойти антифлуд.

Если вы хотите ставить бинд на паузу используйте команду pause, ниже кнопка клавиатуры end ставит бинд на паузу.
Код:
end:: pause

Как забиндить некоторые уникальные кнопки представлено в следующем посте.

Мышь (работает только с Windows NT/2000/XP)

LButton - левая кнопка мыши

RButton - правая кнопка мыши

MButton - средняя кнопка мыши (или колесо)

WheelDown - поворот колеса мыши "вниз"

WheelUp - поворот колеса мыши "вверх"

Поддерживается только Windows 2000/XP:

XButton1 - четвертая кнопка мыши, боковая

XButton2 - пятая кнопка мыши, боковая
Клавиатура

Примечание: названия буквенных и цифровых клавиш точно такие же, как и сами символы этих клавиш. То есть, клавиша "b" записывается как b, а клавиша "5" как 5.

Enter (или Return)

Backspace (или BS)

NumpadEnter - клавиша "Numpad-Enter"

Следующие названия клавиш используются, когда Numlock выключен:

NumpadClear - та же кнопка, что и Numpad5 на клавиатуре

Эти названия клавиш используются при включенном Numlock'e:

С F1 по F24 - двенадцать или более функциональных клавиш, на большинстве клавиатур представлены в самом верхнем ряду.

AppsKey - клавиша, вызывающая контекстное меню файла/программы, как при правом клике мышкой.

LWin - левая клавиша "Windows"

RWin - правая клавиша "Windows"

Control (или Ctrl)

Примечание: в большинстве случаев работа со следующими шестью клавишами не поддерживается под Windows 95/98/Me. Используйте в этом случае вариант их записи, приведенный выше, вместо следующего:

LControl (или LCtrl) - левый "Сontrol"

RControl (или RCtrl) - правый "Сontrol"

LAlt - левый "Alt"

RAlt - правый "Alt". Примечание: если на вашей клавиатуре вместо клавиши RAlt сделана клавиша AltGr, вы можете использовать следующую запись данной клавиши: ! Также заметим, что клавишу AltGr можно записать как сочетание клавиш "LControl & RAlt::".

Help - довольно редкая клавиша, присутствует далеко не на всех клавиатурах. И работает совсем не как F1.

Sleep - предупреждаем, что клавиша "Sleep" на некоторых клавиатурах не работает под этой записью.

Клавиши расширенных функций Мультимедийных и Интернет-клавиатур:

Запись вида SCnnn, где nnn - это сканкод клавиши, позволяет нам работать с остальными клавишами, не упоминавшимися выше. Подробнее об этом - см. ниже.

Возможна запись VKnn, где nn является шестнадцатиричным виртуальным кодом клавиши. Несмотря на то, что этот редко используемый метод поддерживается всеми версиями программы, только с версии 1.0.38.02 и выше для некоторых типов горячих клавиш реализовано предотвращение отслеживания их функцией "keyboard hook" (обработчик клавиатурных прерываний). Например, следующая комбинация клавиш не использует обработчик клавиатурных прерываний (keyboard hook), и как следствие может быть запущена нажатием как клавиши Home, так и NumpadHome:

Код:
^VK24::MsgBox Вы нажали Home или NumpadHome`, удерживая клавишу Control.

Joy1 - Joy32: кнопки джойстика. Для удобства определения номеров кнопок вашего джойстика был создан специальный тест-скрипт (см. ссылку в оригинале статьи). Обратите внимание, что такие префиксы, как ^ (control) и + (shift) здесь не поддерживаются (тем не менее, команда GetKeyState может использоваться). Также обратите внимание, что нажатия клавиш джойстика всегда обращены напрямую в активное окно, поддерживающее приём таких сигналов.

Несмотря на то, что следующие управляющие элементы джойстика не могут использоваться как горячие клавиши, их можно использовать при помощи команды GetKeyState:

JoyX, JoyY, и JoyZ: где X (горизонтальная), Y (вертикальная), и Z (высота/глубина) - оси координат джойстика.

JoyR: руль джойстика или 4-ая ось джойстика.

JoyU и JoyV: 5-ая и 6-ая оси джойстика.

JoyPOV: the point-of-view (hat) control (POV control, "шляпка" или "переключатель видов"; например, вид глазами игрока).

JoyName: название джойстика.

JoyButtons: количество кнопок, поддерживаемых джойстиком (не всегда точное).

JoyAxes: количество направлений, поддерживаемых джойстиком.

JoyInfo: генерирует строку, состоящую из нуля или более знаков, иллюстрирующих возможности джойстика: Z (имеется Z направление), R (имеется R направление), U (имеется U направление), V (имеется V направление), P (имеется POV control), D (POV control имеет ограниченное количество дискретных/промежуточных настроек), C (POV control передает непрерывные/точные данные). Пример строки: ZRUVPD.

Несколько джойстиков: если вы используете несколько джойстиков одновременно, то для более точной адресации команды используйте при записи номер джойстика перед именем клавиши джойстика. Например запись 2joy1 будет обозначать первую кнопку второго джойстика.

Примечание: если у вас возникли проблемы с определением скриптами вашего джойстика, вы можете попробовать изменить номер джойстика с 1 на что-нибудь другое, даже несмотря на то, что к компьютеру у вас подключен всего один. Неизвестно, по каким мистическим причинам, но иногда это вместе с использованием нашего тестового скрипта даёт положительный результат.

Использование джойстика как мыши: специальный скрипт превращает ваш джойстик в мышь (см. ссылку в оригинале статьи).

Дистанционные пульты управления

Получение сигналов от дистанционных пультов управления с помощью специального клиентского скрипта WinLIRC - см. ссылку в оригинале статьи.
Специальные клавиши

Если ваши клавиатура или мышь имеют клавиши, не перечисленные выше, вы всё равно имеете возможность использовать их в качестве горячих клавиш, используя следующий метод (необходимы Windows NT/2000/XP или выше):

SC159:: ; Замените 159 на индекс вашей клавиши.
MsgBox, Вы нажали клавишу %A_ThisHotKey%
Return

Читайте также: