как выключить скрипт ahk
AHK: Остановить выполнение скрипта
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 19
1 Тема от ustarta 2020-07-17 16:57:11 (изменено: ypppu, 2020-08-03 10:03:55)
Тема: AHK: Остановить выполнение скрипта
Подскажите пжл, как можно остановить выполнение данного скрипта при нажатии клавиши. Перепробовал разные варианты, ни один не решил проблему.
2 Ответ от ypppu 2020-07-17 18:29:25
Re: AHK: Остановить выполнение скрипта
3 Ответ от ustarta 2020-08-02 10:24:06
Re: AHK: Остановить выполнение скрипта
При использовании паузы останавливается весь скрипт, а нужно что бы остановилось\сбросилось выполнение этих команд. Т.к. скрипт большой, и при отключение паузы, он работает не правильно.
4 Ответ от fgslm 2020-08-03 08:12:03 (изменено: fgslm, 2020-08-03 08:14:25)
Re: AHK: Остановить выполнение скрипта
Вот беда. Тоже столкнулся с такой проблемой. Но думаю её можно решить проверкой параметров вначале скрипта и дальнейшим выполнением/или невыполнением
5 Ответ от ustarta 2020-08-03 13:08:00
Re: AHK: Остановить выполнение скрипта
Интересное решение, можно ли сделать проверку по нажатию комбинации клавиши? Желательно такой же, коротая запускает скрипт.
6 Ответ от fgslm 2020-08-03 18:37:55 (изменено: fgslm, 2020-08-03 19:10:30)
Re: AHK: Остановить выполнение скрипта
по нажатию комбинации клавиши
Хотя, я подумал что для такого решения их придётся держать зажатыми всё выполнение скрипта.
Если нужно сделать «тормоз», то лучше сделать проверку с обратным действием, т.е. прерыванием:
Но возможно комбинация запустит скрипт заново, т.что придётся использововать другое сочетание.
AHK: Включение/выключение цикла на одну кнопку.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 16
1 Тема от Lanceg 2013-08-06 17:41:20 (изменено: Lanceg, 2013-08-06 21:31:53)
Тема: AHK: Включение/выключение цикла на одну кнопку.
В сети нашел этот код:
Но он не работает, как более ‘тонко’ сделать код для микрофона?
2 Ответ от Irbis 2013-08-06 18:26:06 (изменено: Irbis, 2013-08-06 18:29:23)
Re: AHK: Включение/выключение цикла на одну кнопку.
Первое. При нажатии на хоткей скрипт не «возвращается к началу», а встает на паузу, что в данном случае роли не играет:
Насчет микрофона не могу подсказать, пример верный, в справке практически такой же, но он и у меня не работает.
3 Ответ от Lanceg 2013-08-06 18:46:30 (изменено: Lanceg, 2013-08-06 18:47:05)
Re: AHK: Включение/выключение цикла на одну кнопку.
Через паузу и суспенд не вариант, я еще несколько макросов и кучу хоткеев использую одновременно с ним, необходим переключатель на одну кнопку, вот пример для двух кнопок:
4 Ответ от serzh82saratov 2013-08-06 19:12:50 (изменено: serzh82saratov, 2013-08-06 19:46:21)
Re: AHK: Включение/выключение цикла на одну кнопку.
Включение/выключение цикла на одну кнопку
2 вариант, если MaxThreadsPerHotkey мешает:
5 Ответ от serzh82saratov 2013-08-06 20:42:00 (изменено: serzh82saratov, 2013-08-06 21:29:53)
Re: AHK: Включение/выключение цикла на одну кнопку.
Также если не нужна высокая частота повторений, можно иммитировать цикл:
6 Ответ от Lanceg 2013-08-06 21:43:46 (изменено: Lanceg, 2013-08-06 21:45:05)
Re: AHK: Включение/выключение цикла на одну кнопку.
Мне необходима гибкость скрипта, сделать код вкл/выкл. именно вот для такого цикла:
Скрипты выше не подходят вроде бы, либо подходят, но я не вижу сходства с работой моего цикла, мне не нужны постоянные повторения, нужно в пределах интервала рандома задать эти нажатия кнопки Т, к тому же было бы неплохо если сам скрипт вкл и выкл на эту же кнопку Т, но можно сделать и на другую, главное чтобы была задействована клавиша Т и выполнялся цикл который я показал, либо аналогичный или схожий, с возможностью динамической настройки.
Моих знаний в кодинге не хватает для построения такого кода, я дилетант
7 Ответ от serzh82saratov 2013-08-06 21:48:17
Re: AHK: Включение/выключение цикла на одну кнопку.
В любом примере замените ToolTip % A_TickCount на своё:
неплохо если сам скрипт вкл и выкл на эту же кнопку Т
8 Ответ от Lanceg 2013-08-06 22:21:15 (изменено: Lanceg, 2013-08-06 22:25:20)
Re: AHK: Включение/выключение цикла на одну кнопку.
Забыл уточнить одну маленькую деталь, из-за которой, кажется, все не работает так как нужно:
Пытаюсь подстроить луп под разный код выше, безрезультатно.
Напишу еще раз, как должно это происходить:
После физического нажатия T, запускается цикл имитации нажатия этой кнопки с рандомной задержкой, при повторном физическом нажатии на Т, подпрограмма перестает исполнять цикл, до повторного запуска.
Если такой вариант невозможен, можно заменить запуск и выключение подпрограммы на другую кнопку, например Y.
Выход из текущего потока или (если скрипт не резидентный, т.е. не содержит директиву #Persistent, и не содержит горячих клавиш) из скрипта в целом.
Параметры
ExitCode | Код выхода. Целое число (отрицательное, положительное, нуль или выражение), которое скрипт возвращает вызвавшей его программе, когда завершается. Этот код доступен любой программе, запускающей скрипт, например, другому скрипту (через RunWait) или пакетному (.bat) файлу. Если код выхода не задан, он устанавливается в 0. Ноль традиционно используется как индикатор успеха. |
Примечания
Если скрипт не содержит горячих клавиш, не объявлен резидентным (через директиву #Persistent) и не должен поддерживать клавиши Num/Scroll/CapsLock всегда включенными или выключенными, он завершается как только встречает команду Exit (кроме случая, когда он содержит подпрограмму OnExit).
Иначе команда Exit завершает текущий поток. Иными словами, вся цепочка подпрограмм, вызванных непосредственно или опосредованно пунктом меню, таймером или горячей клавишей будет завершена так, как будто в каждой из них выполнится команда Return. Для самой же подпрограммы, в которой непосредственно выполняется команда Exit, её действие эквивалентно Return.
Примечание переводчика. Чтобы понять разницу между Exit и Return в описанном выше случае, представьте, что подпрограмма А вызвала подпрограмму В, а В вызвала С (через переходы к меткам по команде Gosub или Goto). Если С завершается через Return, вызвавшая её В продолжит выполняться дальше. Если через Exit, В немедленно завершается. Вызвавшая её А также завершается.
Чтобы завершить скрипт, содержащий горячие клавиши или являющийся резидентным, используйте команду ExitApp.
Синтаксис языка
Двойные кавычки («) имеют специальное назначение, только если они соотносятся с выражениями. Во всех же остальных случаях они трактуются как обычные символы. Также, при запуске какой либо программы или файла, операционная система как правило требует наличия кавычек в строке адреса, если там содержатся пробелы. Например:
Имена переменных всегда заключаются в значки процентов, за исключением случаев, которые в представленных примерах выделены жирным шрифтом:
Для вычисления количества прошедшего времени между двумя датами используйте команду EnvSub, как проиллюстрировано в примере из соответствующей статьи. Также, встроенная переменная A_Now содержит данные о текущем времени. И наконец, существуют ещё несколько встроенных переменных, работающих с датой/временем, как например команда FormatTime, использующаяся для создания строки даты/времени в произвольном формате.
Почему строки автозамены, команды Send и MouseClick не работают в некоторых играх?
Некоторые игры используют в своей работе только механизм DirectInput. Как следствие, такое приложение может игнорировать все эмуляции нажатий клавиш и кнопок мыши. Несмотря на то, что серьёзной работы по этому вопросу ещё не проводилось, было обнаружено, что для большинства игр увеличение параметра SetKeyDelay явилось эффективным для включения в работу команды Send. Попробуйте сделать так:
Также для обхода этой проблемы вы можете попробовать использовать другие программы для эмуляции нажатий клавиш и кнопок мыши, такие, как Journal Macro, QuicKeys, KeyGO, OnHand, и Toggle Keyboard.
Я использую несколько языковых раскладок на клавиатуре. Почему команда Send и строки автозамены иногда пропечатывают мне не те буквы?
Это происходит потому, что язык, на котором работает скрипт (английский) не совпадает с языковой раскладкой, выбранной вами для работы в конкретном приложении. Для синхронизации раскладок, вам нужно изменить «язык» для скриптов AutoHotkey. Сделать это можно вручную: простым двойным кликом на иконке скрипта в системном трее вызываем рабочее окно самого скрипта, далее меняем раскладку клавиатуры (обычно в Windows это LeftAlt+Shift), закрываем окно. Можно также воспользоваться следующим примером скрипта, автоматически меняющего языковую раскладку для скриптов AutoHotKey:
Дополнительная информация: как и любое другое приложение, каждый скрипт начинает работу с языком, установленным вами по умолчанию. Если эта установка не совпадает с языковой раскладкой, выбранной для приложения, куда вы «впечатываете» строки, скрипт может «перевести» их в нечто невообразимое.
Могу ли я управлять Winamp’ом, если его окно не является активным?
Смотрите статью «Управление Winamp’ом».
Как можно изменить надписи на кнопках, появляющихся в окошке MsgBox?
Смотрите пример в статье «Изменение надписей на кнопках в MsgBox».
Горячие клавиши, строки автозамены и переназначение клавиш
Четвёртая (XButton1) и пятая кнопка мыши (XButton2) также доступны для программы, при условии, что драйвера мыши позволяют Windows «увидеть» их сигналы. Если же сигналы от этих кнопок Windows не видит, а также в том случае, когда на мыши есть ещё какие-либо дополнительные кнопки, вы можете сконфигурировать драйвера мыши таким образом, чтобы при нажатии этих дополнительных кнопок в Windows посылались бы нажатия стандартных клавиатурных клавиш, а уже их использовать в своих скриптах. Например, если вы в драйверах мыши установили на её четвёртую кнопку посылание сигналов нажатий комбинации клавиш Control+F12, то в своих скриптах можете спокойно программировать на горячие клавиши ^F12:: все, что вам нужно.
Если всё-таки пятая и четвертая кнопки вашей мыши остаются невидимыми для Windows, вы можете попробовать не устанавливать «родные» мышиные драйвера, а использовать вместо них драйвера по умолчанию для мыши Windows. Это может помочь, однако в этом случае вы, само собой, будете лишены возможности использовать расширенные функции, которые были заложены в «фирменные» драйвера.
Как использовать символы и знаки пунктуации в качестве горячих клавиш?
Символы, которые выдает клавиатура напрямую, без дополнительного нажатия клавиши Shift, можно использовать как обычные клавиши, без всяких прочих условий, за исключением точки с запятой, которая прописывается как (`;::). Вот пример использования акцента в качестве горячей клавиши:
Как переназначить на клавиши или кнопки мыши другие символы/клавиши?
Смотрите статью о переназначении клавиш.
Можно ли сделать так, чтобы горячие клавиши или строки автозамены посылались исключительно для одной программы? Другими словами, во всех других приложениях эти клавиши работали бы как самые обычные клавиши, и только в нужной мне программе ими бы включались соответствующие скрипты?
Рассмотрим также и другой метод, но он работает только в том случае, если программа «CAD Editor» изначально сконфигурирована таким образом, что совершенно не реагирует на нажатие клавиши NumpadEnter. Префикс из тильды (
) превращает NumpadEnter в незаблокированную горячую клавишу (клавишу, которая работает как «горячая клавиша», но при этом всегда посылается активному окну). То есть запись вида
NumpadEnter позволяет использовать клавишу NumpadEnter как обычный NumpadEnter всё то время, пока она не запускает наш скрипт:
NumpadEnter:: IfWinNotActive, CAD Editor Return ; Если же окно нашей программы стало активным, выполняется следующее действие: Send, abc Return
Рассмотрим следующий пример:
Теперь сделаем так, чтобы Numpad0 работал как обычный Numpad0 до тех пор, пока он нам не понадобится для запуска нашей комбинации, описанной выше:
Существует ли способ, позволяющий использовать в своих целях «встроенные» в Windows сочетания клавиш, например такие, как Win+U (Utility Manager) и Win+R (Run)? Можно ли их изменить или отключить совсем?
Смотрите соответствующую статью о переназначении и запрещении горячих клавиш.
На моей клавиатуре есть специальная клавиша 000. Можно ли её использовать как горячую клавишу?
Да, вы можете её использовать. В нашем примере показано, как можно использовать клавишу 000, превратив её в знак равенства. В строке скрипта «Send, =» Вы можете заменить знак равенства на всё, что вам угодно. Примечание: пример доступен по ссылке, которая имеется в оригинале этой статьи.
[ Работает ] [Гайд][AHK] Учимся создавать скрипты с AutoHotKey (на примере BDO)
Статьи и гайды по Black Desert: Раздел со статьями для BDO не обязательно читерской тематики. |
[Гайд][AHK] Учимся создавать скрипты с AutoHotKey (на примере BDO)
Доброе время суток, друзья!
Сегодня я расскажу Вам об основах создания и использования скриптов, используя AutoHotKey! 🙂
В этой ветке много макросов на Bloody, однако лично мое мнение, что блуди не удобная штука. Ну тут каждому на свой вкус.
Далее по тексу саму программу и скриптовый язык AutoHotKey я буду называть AHK или АХК.
Создаем пустой скрипт.
После того как Вы внесли какой либо код в скрипт, сохраняем его и запускаем от имени администратора.
Давайте рассмотрим основные команды (те, которые я чаще всего использую).
Обратите внимание, что ПОЛНЫЙ синтаксис команд с примерами представлен на официальном сайте autohotkey.com
В АХК конец предыдущей команды обозначается концом прошлой команды, переносом на следующую строку, либо завершением <блока команд>. Я представляю насколько непонятно это выглядит, однако я думаю чуть дальше вы поймете.
В первую очередь я Вам советую в скрипт вписывать несколько строк, которые в случае Вашей ошибки\недоработки позволят отключать скрипт. Например, если Вы поставили нажиматься Alt+F4 каждые 0.1 секунд. Короче если вы не можете остановить скрипт мышкой, чтоб мы могли это сделать кнопкой.
Что это такое? При нажатии на F11 у нас будет выполнена команда pause, которая запаузит скрипт. При повторном нажатии скрипт продолжит работу с того места, где закончил. При нажатии F12 соответственно скрипт будет перезагружен совсем. 🙂 На заметку: если вы изменили код скрипта, сохранили, то при нажатии на f12 будет загружен уже измененный скрипт. Это удобно когда вы только создаете\отлаживаете скрипт.
Эту строку я советую тоже вставлять во все скрипты, где у Вас будут использоваться координаты. (ну например нажать мышкой на крестик в ворде 🙂 ). Дело в том, что в этом случае координаты будут смотреться не относительно вашего разрешения(монитора), а относительно текущего окна. Т.е. если у вас игра\ворд запущены не в полное окно, то вы можете их двигать куда угодно, координаты будут одинаковы.
Далее. Привязка действий к клавишам. Существует список кучи модификаторов. Я приведу основные:
При нажатии сочетания ALT и цифры 1 у нас выведется пустое окошечко.
Таким же образом привязываются абсолютно все действия.
Если у Вас больше одной команды, то я советую заключать их в <>.
Как это будет выглядеть?
В данном случае у нас будут появляться два окошечка последовательно. Но это лишь пример.
Далее рассмотрим одну из самых важных команд: Send, SendPlay, SendInput. Эти команды нужны нам, чтобы посылать какие-то тексты и\или кнопки в игру. Первая делает это чуть медленнее, однако работает всегда. Вторая и третьи(предпочтительна вторая) делают отправку мгновенно.
Важно! Если вы хотите послать отправку КНОПКИ, а не ТЕКСТА, то вы должны заключить кнопку в <>.
Пример: нам нужно отправить строку объявления в игровой чат мгновенно, чтоб оно не мешало нам фармить.
Все знаки пунктуации нужно заключать в <>.
Теперь при нажатии Ctrl+1 у нас отправится объява в чат, причем скорее всего мы даже не успеем заметить как открылся чат.
При нажатии Ctrl+2 мы гарантированно изменим чат на Общий, после чего напишется строка и остановится на «Цена:» но не отправится, там мы сможем ввести цену. Ну я надеюсь суть вы поняли 🙂
При нажатии на Пуск+1 у нас зажмется шифт на 2 секунды.
Теперь попробуем разобраться с мышкой.
При нажатии на Альт+NumPad0 у нас произойдет «клик» левой кнопкой по координатам 5 5.
При нажатии Альт+NumPad1 у нас произойдет клик правой кнопкой по 10 10, через секунду правая кнопка зажмется на полсекунды.
Как нам собирать эти координаты? Я пользуюсь двумя способами. Первый: запускаем любой скрипт, в трее нажимаем правой кнопкой, потом Window Spy. Откроется окошечко
Нас интересует строка In Active Window:
Второй: использовать код, который будет показывать нам координаты при нажатии на кнопочку.
Разберемся с циклами. То есть со случаями, когда нам нужно одно и то же действие повторить много раз.
Например, нам нужно кормить кота каждые пять минут.
после ; мы можем писать комментарии.
В случае, когда нам нужно повторить действие определенное количество раз, просто после Loop, ставим цифру сколько раз:
У нас отправиться 10 нажатий
Ну вот наверное и всё, из основного 🙂 Теперь перед Вами всё ограничено лишь воображением.
Я прошу Вас задавать вопросы, если появятся, а также сказать, надо ли что-то еще добавить в гайд? 🙂