Adelitusn.ru

ПК и Техника
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как писать на АХК

Как писать на АХК

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

Ставим AHK, уже после кликаем левой клавишей мыши > создать > AutoHotKey script. Набираем название, сохраняем. Нажимаем левой клавишей мыши по скрипту > «edit script» либо «открыть с помощью»

Зачастую, что бы что-то было понятно и для общего комфорта иногда надо добавлять звуковые уведомления в скрипт.
Сделать это можно 2 способами:

SoundBeep, 1000, 100 //Проигрывает «бииииип» с тональностю 1000, длительностью 100

SoundPlay, Mediashutdown.wav // проигрывает звук shutdown.waw из папки Media

— стандартная функция клавеши не блокируеться, те виндовс воспрнимает нажатие клавиши и скрипт. Другие атрибуты смотрите на сайте AHK;
Sleep 20 //ждем
Loop // создаем цикл
<
GetKeyState,state,space,P //state — название переменной которая отвечает за статус клавиши, space – имя клавиши, P – режим, когда пользователь давит на клавишу, режим T – когда пользователь включает/ выключает нажатием на клавишу
if state = U //если клавиша был разжата (отпущена) то .
break //завершаем цикл

Send, //посылаем пробел
Sleep,17 //ждем перед повторением цикла
>

ScriptActive = 0
F5::
If ScriptActive = 1 //переменная
<
ScriptActive = 0
SoundPlay, Mediadeactivated.wav
>
else if ScriptActive = 0
<
ScriptActive = 1
SoundPlay, Mediaactivated.wav
>
return

далее в функцию суем
If ScriptActive = 1
<

Работает только в оконном режиме
Loop
<
PixelGetColor, Color, 18, 729 // cчитывает цвет пикселя по координатам 18,729 и записывает его в переменную Color

if Color = %Color1%
<
MouseClick, left, 100, 300 //посылаем клик левой кнопкой мыши по координатам 100, 300
>
Важно: координаты пикселей можно узнать с помощью AU3_Spy.exe в папке с AHK

Неплохо работает в кс 1.6, если использовать кастомные модели игроков, то будет работать и в csgo

TColor:=0xFFCC99 //цвета смотрим в AU3_spy.exe
HeadColor:=0x00ED00
CTcolor:=00009E

RButton:: //Если зажата правая кнопка мыши
Sleep 100
Loop
<
PixelGetColor, Color, 18, 729
if Color = %Color1%
<
Send
Send
>
GetKeyState,state,RButton,P
if state = U
break
MouseGetPos, mX, mY //записывает координаты мыши в переменные

PixelSearch, nX, nY, mX — 5, mY — 5, mX + 5, mY + 5, 0x00ED00, 100, Fast //nY, nX, mY, mX – углы квадрата на котором считываеются пиксели: 100 – возможное различие цвета, Fast — метод поиска (быстрый)
If ((nX != "") && (nY != ""))
<
Send,
>
>

Снова, только оконный режим. Рисует маленький квадратик по центру. Можно заменить картинкой используя SplashImage, pic.gif

Gui Destroy
Gui, +AlwaysOnTop
Gui, Color, fffffa
Winset, TransColor, ff0000
gui, -caption
gui, +border
gui, show, w2 h2, crosshair

Цветной аимбот.
Пацаны, не стоит раскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не настоящий аимбот и даже не тот какой был в вермилионе. Сюда лучше не лезть. Серьезно, каждый из вас будет жалеть. Лучше закройте тему и забудьте, что тут писалось. Я вполне понимаю, что этим сообщением призыву добавочный интерес, однако желаю мгновенно предупредить любознательных — стоп. Другие попросту не зайдут.

Autohotkey-дважды нажмите комбинацию клавиш, чтобы запустить часть кода Ahk

есть ли способ сделать двойной щелчок комбинации клавиш для запуска части кода Ahk.

Читайте так же:
Включение и отключение макросов в файлах Office

можно сделать дважды любой мышь или Сенсорное Устройство.

а мне нравится дважды для всех Сочетания Клавиш.

Я работаю на системе Windows, и мне нравится Языки Autohotkey.

Это код, который я до сих пор, хорошая идея всегда приветствуются.

Примечание — Hotkeystring и клавиши не работает.

2 ответов

вы можете сделать на вашей системе Windows, DoubleClicks или MultiClicks для всех комбинаций клавиш для запуска любой части кодов Ahk, (горячие клавиши cc::) — и если вы хотите использовать его также для (HotkeyStrings:*: cv::) вы можете изменить сценарий Литт бит.

С помощью этих двух сценариев Autohotkey вы можете сделать это.

  • 1: автоматически копировать все комбинации клавиш в один раздел реестра Windows. (вы можете запустить это в Фоне)
  • 2: затем можно, использовать только то, что строковое значение из реестра, и написать коды на все. (Примечание-этот простой пример сценария покажет всю вашу клавиатуру & Движения мыши по экрану — и вы можете проверить это с Дважды нажмите клавиши Ctrl+(2x)c или MultiClicks 3x)

DoubleClicks > if(KeypressValue=»Ctrl + c, c») или

MultiClicks > if(KeypressValue=»Ctrl + c (3)»)

2 — Вы даже можете писать сценарии с других языков. (необходимо только получить доступ к этому разделу реестра.)

  • Microsoft Visual Studio
  • Visual Basic
  • Turbo Pascal
  • Delphi Языки

2 — DoubleClickForAllKeystrokes.транспортное средство

1 — KeypressToREG.транспортное средство

это не очень просто, но это можно сделать с усилием.

в вашем примере, для первых двух его частей, где вы отправляете ^c в обоих случаях, я реализовал что-то очень близкое к этому для копирования скрытого текста в Word. Для этого случая использования не имеет значения, выполняется ли ^c при каждом нажатии клавиши, а затем для «части 2», если второй ^c вошел в то, что вы могли бы считать «временем двойного щелчка», что является плохой номенклатурой, так как никто не щелкает что угодно-тогда скрытый текст тоже будет скопирован. Я назову это «время двойного нажатия», а не время двойного щелчка, и в любом случае хорошее начальное значение составляет около 500 мс.

Пример 1

Итак, в моем коде, если я нажму ^c один раз, он копирует. Если я нажимаю ^c во второй раз, в течение 500 мс, он копирует скрытый текст (т. е. двойное нажатие). Если я нажимаю ^c во второй раз, но это было >500 мс с момента последнего нажатия, то он просто копирует снова (никакого вреда нет грязный.)

чтобы сделать это, вы создаете функцию, которая вызывается для горячей клавиши ^c (которая является горячей клавишей блокировки клавиш, т. е. у нее нет Тильды). Внутри функции, статическая переменная используется для отслеживания времени последнего выполнения, а затем сравнивается с текущим временем выполнения. Основываясь на результатах сравнения, он либо отправляет ^c, либо вызывает любой другой код, который вы хотите выполнить (или делает и то, и другое). Так это первые 2 части кода выше.

оптимальное время для копирования/вставки

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

Пример 2

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

  • если последовательность клавиш , случай 1 выполнит
  • при нажатии клавиши последовательность была , случай 2 выполнит
  • .
  • если последовательность клавиш , случай 5 выполнит

в некоторых случаях, когда я использую это для 5 или более параметров, я обычно показываю подсказку или графический интерфейс, с которым выбран параметр. Начальная горячая клавиша вызывает всплывающую подсказку / GUI и выбирает опцию 1. Удерживая нажатой клавишу Ctrl (в данном примере) сохраняет графический интерфейс, и параметр Не выбран. то есть, вы должны полностью отпустить модификатор горячих клавиш (control) для завершения последовательности (немного отличается от приведенного выше примера). Пока у вас есть модификатор вниз, вы можете продолжать нажимать клавишу, и она будет увеличиваться, какой параметр выбран, затем вы отпустите клавишу модификатора, чтобы завершить выбор. Для multi-меню, как это, что использовать GUI, у меня тоже цикл нужным, так что если есть только 5 вариантов или что-то, то если вы получаете до 6 это просто петли с 1 и позволяет циклически варианты пока не получишь то, что хочешь.

это лучше для определенных вещей, где вы хотите иметь несколько вариантов, нажав клавиши и не нужно, чтобы это было так быстро, так как он будет ждать, пока вы не отпустили клавиши для выполнения вместо (Пример 1) Прыжки на него, как только вы нажмете их.

Итак, один из способов сделать это следующим образом:

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

тернарный оператор здесь просто проверяет, инициализируем ли мы (переменная null или 0) и установим 1, или если мы достигли нашего максимального количества опций + 1, т. е. 5+1=6, например, в этом случае для 5 выбираемых опций, а затем также сбросить до 1. В противном случае (значение после двоеточия) просто увеличьте выбранный параметр на 1.

первая функция также вызывает вторую функцию обработчика асинхронно через SetTimer (одноразовый вызов, поэтому SetTimer будет использоваться с некоторым отрицательным минимальным значением, скажем -100). Это позволяет первой функции выйти, чтобы основной поток мог продолжать выполняться, в то время как вторая функция также продолжает выполняться. т. е. вторая функция может выполняться, пока первая функция вызывается снова и снова для каждого последовательного нажатия клавиши, соответствующего определению горячей клавиши. Если поместить все в одну функцию, выполнение не будет завершите первый раз, и вы не можете обнаружить последовательные нажатия клавиш через определение горячей клавиши. (Вы все еще можете обнаружить их вручную, но проще просто использовать существующую инфраструктуру горячих клавиш для обнаружения)

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

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

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

для этого Вам также нужно будет убедиться, что ваш myOption переменной охвата уместна между функциями (общее или глобальное).

Обработчик Побег

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

так, например, настройте горячую клавишу ^Escape с кодом, который заставит escape, если нажат модификатор + escape. Это можно сделать, установив myOption=0 и отправив для принудительного завершения цикла обработчика, а затем полное без действие. Это вызывает обработчик выхода никаких других действий, кроме включения условного хоткей для обработчика побег.

Поток, NoTimers, False

и последнее замечание, что вам может понадобиться использовать Thread, NoTimers, False в первой вызывающей функции, которая влияет на последовательно запускаемые потоки, но необходима для того, чтобы первые 15 мс/1000 строк кода были немедленно прерваны другим вызовом горячей клавиши. Если у вас нет этого, нажатия клавиш могут показаться, чтобы получить «упал», или ваш пробег может варьироваться на получение вещи на работу.

вообще говоря, для всех колокола и свистки AutoHotkey имеет, я не понял, более упрощенный способ получения Multi-keypress макросы для работы, но как только вы получите что-то подобное реализовано в рамках, которые вы можете настроить, чтобы отбросить ваши различные случаи выполнения в, он будет работать очень надежно.

Examples

Non-exhaustive examples of some of the functions available with this package. Full documentation coming soon!

Mouse

Keyboard

Windows

You can do stuff with windows, too.

Getting windows

Working with windows

Screen

Sound

non-blocking modes

For some functions, you can also opt for a non-blocking interface, so you can do other stuff while AHK scripts run.

You should see an output something like

Add directives

You can add directives that will be added to all generated scripts. For example, to prevent the AHK trayicon from appearing, you can add the NoTrayIcon directive.

By default, some directives are automatically added to ensure functionality and are merged with any user-provided directives.

Run arbitrary AutoHotkey scripts

Communicating data from ahk to Python

If you’re writing your own ahk scripts to use with this library, you can use FileAppend with the * parameter to get data from your ahk script into Python.

Suppose you have a script like so

If your autohotkey returns something that can’t be decoded, add the keyword argument decode=False in which case you’ll get back a CompletedProcess object where stdout (and stderr) will be bytes and you can handle it however you choose.

Preview features

Preview features are experimental features that are may not be fully functional. These features are (even more) likely to have breaking changes without warning.

Github issues are provided for convenience to collect feedback on these features.

AHKDaemon

Normally, AHK works by creating a new subprocess for every command invocation. Because processes are expensive to create in Windows, this can lead to performance issues for some use-cases. AHKDaemon allows all AHK commands to be carried out in a single process, as opposed to running each command in a new subprocess, improving performance.

Some other details change in Daemon mode, such as persistence of state (e.g. changes to CoordMode).

For the most part, the AHK Daemon works just like the regular AHK class, with a few caveats. Most notably, AHKDaemon does not allow you to run arbitrary AutoHotkey scripts and does not yet support Hotkeys. However, you can always use the normal AHK class alongside the daemon for these needs.

AsyncAHKDaemon is also available for asyncio support.

In the future, AHKDaemon may become the default implementation.

Async API

An async API is provided so functions can be called using async / await . All the same methods from the synchronous API are available in the async API.

For the most part, the async API is identical to that of the normal API, with a few exceptions:

While properties (like .mouse_position or .title for windows) can be await ed, additional methods (like get_mouse_position() and get_title() ) have been added for a more intuitive API.

Property setters have different (probably undesired) behavior in the async API. Instead, you should use a comparable method. If you do use the property setters, the invocation is created using asyncio.create_task() , which means that the task won’t run until control is yielded back to the event loop. For now, this will also raise a warning to the same.

Lastly, while it’s possible to pass blocking=False in the async API, this sometimes will cause problems with certain functions. For now, a warning is raised in this case.

Hotkeys

Hotkeys now have a primitive implementation. You give it a hotkey (a string the same as in an ahk script, without the :: ) and the body of an AHK script to execute as a response to the hotkey.

Right now, only AHK code is supported as callbacks for hotkeys. Support for Python callbacks via the Async API is planned.

At this point, the hotkey is active. If you press + n , the script Run Notepad will execute.

There is no need to add return to the provided script, as it is provided by the template.

To stop the hotkey call the stop() method.

ActionChain

ActionChain s let you define a set of actions to be performed in order at a later time.

They work just like the AHK class, except the actions are deferred until the perform method is called.

An additional method sleep is provided to allow for waiting between actions.

Just like anywhere else, scripts running simultaneously may conflict with one another, so using blocking interfaces is generally recommended. Currently, there is limited support for interacting with windows in actionchains, you may want to use win_set )

find_window/find_windows methods

Right now, these are implemented by iterating over all window handles and filtering with Python.
They may be optimized in the future.

AHK.find_windows returns a generator filtering results based on attributes provided as keyword arguments.
AHK.find_window is similar, but returns the first matching window instead of all matching windows.

There are couple convenience functions, but not sure if these will stay around or maybe we’ll add more, depending on feedback.

  • find_windows_by_title
  • find_window_by_title
  • find_windows_by_text
  • find_window_by_text

Errors and Debugging

You can enable debug logging, which will output script text before execution, and some other potentially useful debugging information.

Also note that, for now, errors with running AHK scripts will often pass silently. In the future, better error handling will be added.

Non-Python dependencies

A convenient way to do this is to install the binary extra (requires version 0.13 or higher of this package)

For versions < 0.13 you can install the ahk-binary package directly:

You can also use the AHK_PATH environment variable to specify the executable location.

Alternatively, you may provide the path in code

Contributing

All contributions are welcomed and appreciated.

Please feel free to open a GitHub issue or PR for feedback, ideas, feature requests or questions.

There’s still some work to be done in the way of implementation. The ideal interfaces are still yet to be determined and your help would be invaluable.

The vision is to provide access to the most useful features of the AutoHotkey API in a Pythonic way.

Similar projects

These are some similar projects that are commonly used for automation with Python.

AutoHotkey — программа для автоматизации действий на ПК

AutoHotkey представляет собой ряд профессиональных инструментов, с помощью которых можно настроить автоматическое выполнение любых операций, которые часто повторяются на компьютере. Это позволит сэкономить личное время пользователя.

Основные возможности

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

Плюсы и минусы

  • автоматический запуск практически любых операций на ПК;
  • встроенный скриптовый язык;
  • переназначение любых клавиш;
  • поддержка разных устройств для вывода.
  • некоторые сложности в освоении.

Похожие программы

Auto-Clicker. Программа для запоминания и последующего воспроизведения всех действий компьютерной мыши. Записанные действия в ней можно повторять произвольное количество раз, настраивая скорость их воспроизведения.

Macro Recorder. Приложение, которое может автоматизировать все рутинные процессы на компьютере. С его помощью можно создавать макросы, которые будут самостоятельно запускать необходимые программы, выполнять клики мышкой, вводить текст и т. д.

Как пользоваться приложением

Для того чтобы с помощью программы назначить автоматическое выполнение какого-либо действия, нужно создать скрипт. Он представляет собой всплывающее окно с пометкой «Я рогалег». С этой целью используем команду MsgBox, которую можно вызвать любым текстом. Надпись и команду необходимо вписать в любой текстовый редактор, так как сама программа как такового отдельного окна не имеет. Далее сохраняем файл, обязательно указав для него расширение «ahk». Скрипт будет выполнен при нажатии на него двойным щелчком.

При запуске скрипта появится значок «Autohotkey». Нажав на него правой кнопкой, вы сможете выбрать необходимые команды.

Код, который должен автоматически выполняться при запуске скрипта, помещается вверху файла. Идентификаторы нужно указывать для горячих клавиш.
Рассмотрим, как это действует, на примере назначения автоматического запуска блокнота Notepad++ при нажатии определенных клавиш.
Для начала набираем «#n:: Run notepad++» и сохраняем файл. Дважды щелкаем по нему и набираем команду «Win+n». В области уведомления появится значок, а программа будет запущена при нажатии указанной комбинации клавиш.
В команде значок «#n» определяет кнопки, «::» — разделяет обозначения самих клавиш от команд. Остальные базовые кнопки обозначаются таким образом:

AutoHotkey поможет легко и быстро выполнять любые операции и действия, которые вам приходится часто производить на своем ПК.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector