
Цветной текст в консоли в AutoHotkey
Rafaell0 24 минуты назад Цветной текст в консоли в AutoHotkey Средний 10 мин 722 Алгоритмы * Программирование * Изучение языков Windows * Качество кода * Кейс English version.Не так давно я начал обращать внимание, что...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Значимый прорыв формирует отрасль ИИ: Rafaell0 24 минуты назад Цветной текст в консоли в AutoHotkey Средний 10 мин 722 Алгоритмы * Программирование * Изучение языков Windows * Качество кода * Кейс English version. Не так давно я начал обращать внимание, что многие консольные утилиты выводят цветной текст. Меня заинтересовало, смогу ли я тоже добавить цвета в вывод моей консольной версии Launcher.
Задача стояла написать алгоритм, который будет применять менять разные цвета к фрагментам выводимого текста. И в этой статьей мы детально рассмотрим, как можно написать такой алгоритм на моем любимом языке AutoHotkey, как его оптимизировать и что стоит учитывать, когда вы пишете код. Если вы не знакомы с синтаксисом AutoHotkey, не переживайте, я проведу вас через него.
Технические детали
Ведь одна из задач этой статьи - познакомить вас с этим языком. Наивное решениеВиды функцийНачнем с идеи раннего алгоритма. Наша цель - менять цвет сообщения при выводе в консоль (далее - терминал, так как я работаю в эмуляторе Cmder с PowerShell).
Для этого сначала в самом сообщении должны быть какие-то маркеры, которые будут указывать цвет для каждой части текста. Например, маркерами могут служить html теги: text. Далее необходимо найти все такие теги в тексте, извлечь имя цвета и применить его в консоль.
Сырой кодТекст в консолиБлаго Microsoft позволяет нам обращаться к Windows и просить ее что-нибудь сделать. Для этого существует Windows API (Windows Application Programming Interface, он же WinApi или просто функции API). Каждая функция имеет свою документацию на сайте Microsoft, и располагается в своих dynamic-link libraries (DLL), которые загружаются при запуске интерпретатора AutoHotkey.
Отраслевые последствия
В результате мы можем вызывать любые функции из этих библиотек от Microsot из AutoHotkey с помощью встроенной функции языка DllCall. Все встроенные функции AutoHotkey вроде MsgBox или FileAppend вызывают те или иные функции WinApi, но при большом желании мы можем “спуститься на уровень ниже” и вызвать их самостоятельно. Не стоит путать: пользовательские функции мы объявляем сами; функции языка предоставляет интерпретатор; функции WinApi можно вызвать только через DllCall;Для изменения цвета в консоли существует функция WinApi SetConsoleTextAttribute.
Она принимает handle консоли (ее уникальный номер/id) и число, которое “характеризует” цвет. Это не RGB и не HEX представление, а специальный внктренний флаг, на котором мы не будем заострять внимание. Для дальнейшего вывода в консоль существует функция языка FileAppend которая умеет выводить сообщение в текст или в консоль (специальное имя файла - CONOUT$).
В самой ранней версии алгоритма использовалась рекурсивная обработка html тегов цвета и вызов SetConsoleTextAttribute() для каждого с последующим вызовом FileAppend():Print(text, color := 'white { ; Словарь/HashMap который сопоставляет цвету спец.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





