Скрипт, написанный под AutoHotkey 1.1, при запуске через свежеустановленный AutoHotkey v2 выдаёт ошибку синтаксиса уже на первых строках — это самая частая причина, по которой пользователи ищут старую версию AHK. Ветка v2 изменила язык: команды превратились в функции, изменился синтаксис переменных и горячих клавиш, поэтому старый код без переработки не запускается.
Выхода два: либо установить прежнюю версию интерпретатора параллельно с новой, либо адаптировать скрипт. Ниже разберём оба пути, а также то, где безопасно брать старые дистрибутивы и как избежать конфликтов между версиями.
Зачем нужна старая версия AutoHotkey
Переход на устаревшую ветку обычно продиктован не ностальгией, а практической необходимостью. AutoHotkey 1.1 (также известная как AutoHotkey_L) многие годы была основной, и под неё написано огромное количество скриптов — от простых переназначений клавиш до сложных систем автоматизации с GUI.
Типичные ситуации, когда без старой версии не обойтись:
- ⌨️ У вас есть готовый скрипт под AHK 1.1, и переписывать его под v2 нет времени или навыков;
- 📦 Скрипт скачан с форума или GitHub, где автор давно не обновлял код;
- 🧩 Используется библиотека или модуль, существующий только для первой ветки;
- 🖥️ Скрипт должен работать на старой системе, где новая версия не тестировалась;
- 🛠️ Вы поддерживаете чужой проект и обязаны сохранить исходную среду исполнения.
Стоит понимать: ветка 1.1 больше не развивается активно, обновления сводятся к минимуму. Для новых проектов с нуля разумнее изучать v2, а старую версию держать как среду для готового кода.
Различия версий: 1.0, 1.1 и 2.0
Прежде чем скачивать что-либо, определите, под какую именно ветку написан ваш скрипт. Признаки видны прямо в коде: в AHK 1.x команды пишутся без скобок (MsgBox, Привет), а в v2 тот же вызов выглядит как функция — MsgBox("Привет").
| Версия | Статус | Особенности синтаксиса | Кому подходит |
|---|---|---|---|
| AutoHotkey 1.0 (Classic) | Давно не поддерживается | Устаревшие команды, старая система переменных | Только для архивных скриптов начала 2000-х |
| AutoHotkey 1.1 | Минимальная поддержка | Команды с запятыми, legacy-синтаксис, поддержка объектов | Запуск большинства старых скриптов |
| AutoHotkey 2.0 | Активная разработка | Функциональный синтаксис, строгие выражения | Новые проекты и переписанные скрипты |
Конвертер синтаксиса v1 → v2 существует, но он не гарантирует полностью рабочий результат — сложные скрипты после автоматической конвертации почти всегда требуют ручной доработки. Поэтому установка старой ветки часто оказывается быстрее.
Где скачать старую версию безопасно
Единственный надёжный источник — официальный сайт проекта: в разделе загрузок есть архив предыдущих выпусков, где доступны инсталляторы и портативные сборки ветки 1.1. Скачивать дистрибутивы со сторонних «сборников софта» не стоит: интерпретатор имеет полный доступ к системе, и подменённый файл — прямой путь к компрометации компьютера.
⚠️ Внимание: антивирусы иногда реагируют на скомпилированные AHK-скрипты и даже на сам интерпретатор как на «потенциально нежелательное ПО». Это связано с тем, что автоматизацию нажатий клавиш используют и вредоносные программы. Скачивайте дистрибутив только с официального сайта и проверяйте цифровую подпись файла.
Для установки вам понадобится выбрать один из двух вариантов: полный установщик с ассоциацией файлов .ahk или portable-версию — отдельный исполняемый файл, который запускает скрипты без инсталляции в систему. Второй вариант удобен, когда новая версия уже стоит основной.
Установка AHK 1.1 параллельно с версией 2
Конфликта между ветками можно избежать, если не перезаписывать ассоциации файлов. Самый чистый способ — оставить v2 как системную версию, а старую использовать в портативном режиме. Тогда актуальные скрипты запускаются двойным кликом, а legacy-код — через отдельный интерпретатор.
Порядок действий для параллельной работы:
- 📥 Скачайте с официального сайта архив или установщик ветки 1.1;
- 📁 Распакуйте портативную сборку в отдельную папку, например
C:\Tools\AHK_v1\; - 🔗 Создайте ярлык запуска: перетащите файл скрипта на
AutoHotkeyU32.exeилиAutoHotkeyU64.exeиз этой папки; - ⚙️ При необходимости настройте контекстное меню «Открыть с помощью» для файлов
.ahk, указав старый интерпретатор.
☑️ Проверка после установки старой версии
Если скрипт всё равно не стартует, проверьте первую строку кода. Многие авторы указывают требуемую версию директивой — для первой ветки обычно её нет, а для v2 скрипты часто начинаются с #Requires AutoHotkey v2.0. Отсутствие этой строки и синтаксис с запятыми — верный признак кода под старую версию.
Типичные ошибки при запуске старых скриптов
Даже с правильной версией интерпретатора запуск может сопровождаться проблемами. Разберём самые частые.
Ошибка «Target label does not exist» обычно означает, что скрипт ссылается на метку или подпрограмму, которая была удалена или переименована при копировании кода. Проверьте, не обрезан ли файл — сравните его размер с источником.
Скрипт запускается, но горячие клавиши не работают. Возможная причина — конфликт с другой программой, перехватывающей те же сочетания, или запуск без прав администратора, когда целевое приложение работает с повышенными привилегиями. Попробуйте запустить скрипт от имени администратора через контекстное меню.
Кракозябры вместо русского текста. Старые скрипты часто сохранены в кодировке ANSI, а редакторы по умолчанию открывают их как UTF-8. Пересохраните файл в кодировке UTF-8 с BOM — интерпретатор AHK 1.1 корректно распознаёт такой формат.
Как определить версию скрипта по коду
Откройте .ahk файл в блокноте. Если видите команды вида «MsgBox, текст», «Send, keys», «StringReplace» с запятыми — это синтаксис v1. Если вызовы выглядят как функции со скобками — MsgBox("текст"), Send("keys") — это v2. Директива #Requires в первых строках указывает версию явно.
Миграция скриптов с v1 на v2
Если вы решили всё же обновить код, начните с автоматического конвертера — он входит в экосистему проекта и доступен отдельно. Инструмент преобразует команды в функции, меняет синтаксис переменных и помечает места, требующие ручной правки.
Что придётся переписать вручную в любом случае:
- 🔧 Работу с GUI — система создания интерфейсов в v2 переработана полностью;
- 📝 Legacy-присваивание переменных через знак равенства с процентами;
- 🔁 Устаревшие циклы и обращения к псевдо-массивам;
- 🖱️ Команды работы с окнами, у которых изменились параметры.
Для коротких скриптов на 10–20 строк ручное переписывание часто быстрее конвертации: синтаксис v2 логичнее, и заодно вы изучите новую версию языка.
Когда старую версию использовать не стоит
⚠️ Внимание: ветка AutoHotkey 1.0 (Classic) полностью устарела и не получает исправлений. Если ваш скрипт требует именно её, рассмотрите перенос кода хотя бы на 1.1 — синтаксис близок, а стабильность и совместимость с современными Windows заметно выше.
Не стоит ставить старую версию и «на всякий случай» для новых задач. Ветка 1.1 завершила активное развитие: новые функции, улучшения безопасности и поддержка современных возможностей Windows появляются только в v2. Для обучения и свежих проектов выбирайте актуальную ветку, а legacy-интерпретатор держите как инструмент совместимости.
Часто задаваемые вопросы
Можно ли установить AHK 1.1 и v2 одновременно?
Да. Установите одну версию как системную, а вторую используйте в портативном режиме из отдельной папки. Конфликтов не будет, если не назначать обеим версиям ассоциацию с файлами .ahk одновременно.
Почему скрипт v1.1 выдаёт ошибку при запуске через v2?
Синтаксис версий несовместим: в v2 команды заменены функциями, изменилась работа с переменными и строками. Запускайте такой скрипт через интерпретатор ветки 1.1 или конвертируйте код.
Где официально скачать AutoHotkey 1.1?
На официальном сайте проекта в разделе загрузок доступен архив предыдущих версий, включая установщики и портативные сборки ветки 1.1. Сторонние источники использовать небезопасно.
Работают ли старые скрипты на Windows 10 и 11?
Скрипты под AHK 1.1 в целом работают на современных системах, но отдельные функции, зависящие от поведения окон или системных сообщений, могут вести себя иначе. Тестируйте критичные скрипты после обновления ОС.
Как узнать, какая версия интерпретатора запущена?
Наведите курсор на иконку скрипта в системном трее — во всплывающей подсказке отображается версия. Также версию можно вывести из самого скрипта через встроенную переменную A_AhkVersion.