kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 Witiko
Witiko
Вопрос

Как заставить консоль win32 распознавать escape-последовательности ANSI / VT100?

Я строю легкую версию библиотеки ncurses. Пока что он довольно хорошо работает с VT100-совместимыми терминалами, но консоль win32 не может распознать код \ 033 как начало последовательности escape:

# include <stdio.h>
# include "term.h"

int main(void) {
  puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR);
  return 0;
}

Снимок экрана! Что нужно сделать на уровне кода C, чтобы загрузить драйвер ANSI.SYS и распознать escape-последовательности ANSI / VT100?

57 2013-05-26T00:25:30+00:00 13
 rolve
rolve
Редактировал вопрос 8-го марта 2016 в 10:38
Программирование
console-application
windows
terminal
ncurses
ansi-escape
Решение / Ответ
Franco Rondini
Franco Rondini
28-го мая 2013 в 6:43
2013-05-28T18:43:07+00:00
Дополнительно
Источник
Редактировать
#19469911

[ОБНОВЛЕНИЕ] Для последней версии Windows 10 прочитайте полезный вклад @ brainslugs83, чуть ниже в комментариях к этому ответу.

В то время как для версий до Windows 10 Anniversary Update:

ANSI.SYS имеет ограничение, которое может работать только в контексте подсистемы MS-DOS под Windows 95-Vista.

Microsoft KB101875 объясняет, как включить ANSI.SYS в командном окне, но это не относится к Windows NT . Согласно статье: мы все любим цвета, современные версии Windows не имеют такой хорошей поддержки ANSI.

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

Более подробное объяснение см. В статьи в Википедии:

ANSI.SYS также работает в системах, полученных из NT, для 16-битных устаревших программ, выполняемых в рамках NTVDM

Консоль Win32 изначально не поддерживает escape-последовательности ANSI вообще. Программное обеспечение, такое как Ansicon, может, однако, выступать в качестве обертки вокруг стандартной консоли Win32 и добавлять поддержку escape-последовательностей ANSI.

Так что я думаю, что ANSICON от Джейсона Гуда - это ваше решение. Он написан на C, поддерживает 32-разрядную и 64-разрядную версии Windows и [источник доступен](https://github.com / адокса / асикон).

Также я нашел какой-то другой подобный вопрос или пост, на который в конечном итоге был дан ответ, чтобы использовать ANSICON:

  • https://stackoverflow.com/questions/946546/how-load-ansi-escape-codes-or-get-colourred-file-listing-in-winxp-cmd-shell
  • [как использовать ansi.sys в Windows 7](http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/how-to-use-ansisys-in-windows-7/86d06a2a-33d9-45d9-88c4-a79
  • [Как я могу получить cmd.exe для отображения последовательностей экранирования цвета ANSI?](http://answers.yahoo.com/question/index?qid = 20070402210230AA8VFey)
  • цвет анюти в оболочках окон
  • включить цвета ansi в командной строке Windows
Franco Rondini
Franco Rondini
Редактировал ответ 3-го ноября 2018 в 3:38
59
0
 rolve
rolve
8-го марта 2016 в 10:33
2016-03-08T10:33:02+00:00
Дополнительно
Источник
Редактировать
#19469913

Начиная с Windows 10 TH2 (v1511), conhost.exe и cmd.exe поддерживают ANSI и VT100 Escape Sequences из коробки (хотя [они должны быть включены][1]).

Смотрите мой ответ на суперпользователя для более подробной информации.

[1]: https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032 (v = vs.85).aspx

 Community
Community
Редактировал ответ 20-го марта 2017 в 10:18
37
0
Star Brilliant
Star Brilliant
13-го июня 2016 в 7:04
2016-06-13T07:04:45+00:00
Дополнительно
Источник
Редактировать
#19469914

Начиная с Windows 10, вы можете использовать ENABLE_VIRTUAL_TERMINAL_PROCESSING, чтобы включить escape-последовательности ANSI:

https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v = vs.85).aspx

13
0
 Guestreader
Guestreader
24-го сентября 2016 в 9:59
2016-09-24T09:59:47+00:00
Дополнительно
Источник
Редактировать
#19469915

Для Python 2.7 следующий скрипт отлично работает для меня с Windows 10 (v1607)

import os

print '\033[35m'+'color-test'+'\033[39m'+" test end"
os.system('') #enable VT100 Escape Sequence for WINDOWS 10 Ver. 1607
print '\033[35m'+'color-test'+'\033[39m'+" test end"
  • Результат должен быть: *
[35mcolor-test[39m test end

color-test test end
 Simon
Simon
Редактировал ответ 6-го марта 2018 в 5:43
12
0
 Joakim
Joakim
3-го марта 2015 в 4:21
2015-03-03T16:21:06+00:00
Дополнительно
Источник
Редактировать
#19469912

Если ANSICON неприемлем, поскольку требует установки чего-либо в системе, это более легкое решение, которое анализирует и переводит коды ANSI в соответствующие [консольные функции Win32 API][1], такие как SetConsoleTextAttribute.

https://github.com/mattn/ansicolor-w32.c

[1]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682073 (v = vs.85).aspx

8
0
 rho
rho
26-го мая 2013 в 1:40
2013-05-26T01:40:15+00:00
Дополнительно
Источник
Редактировать
#19469910

Для окрашивания cmd вам понадобится Windows.h и используйте SetConsoleTextAttribute (), более подробную информацию можно найти в http://msdn.microsoft.com/en-us/library/windows/desktop/ms686047%28v=vs.85%29.aspx

 Simon
Simon
Редактировал ответ 1-го июля 2018 в 4:32
5
0
Daniel  De Le&#243;n
Daniel De León
15-го мая 2019 в 1:24
2019-05-15T13:24:20+00:00
Дополнительно
Источник
Редактировать
#19469922

На базе @ BrainSlugs83 вы можете активировать текущую версию Windows 10 через регистр с помощью этой командной строки:

REG ADD HKCU\CONSOLE /f /v VirtualTerminalLevel /t REG_DWORD /d 1
4
0
Dawid  Ferenczy Rogožan
Dawid Ferenczy Rogožan
20-го февраля 2018 в 1:31
2018-02-20T13:31:36+00:00
Дополнительно
Источник
Редактировать
#19469917

Мне лично нравится clink. Он не только обрабатывает коды ANSI, но и добавляет множество других функций, поэтому консоль Windows ведет себя как bash (история, обратный поиск истории, сочетания клавиш и т. Д.).):

  • Редактирование той же строки, что и Bash (из библиотеки Readline GNU).
  • История постоянства между сессиями.
  • контекстно-чувствительное завершение ;
  • исполняемые файлы (и псевдонимы).
  • Справочные команды.
  • Переменные среды
  • сторонние инструменты; Git, Mercurial, SVN, Go и P4.
  • новые сочетания клавиш ;
  • Вставить из буфера обмена ( Ctrl-V ).
  • Инкрементный поиск истории ( Ctrl-R / Ctrl-S ).
  • Мощное завершение ( TAB ).
  • Отменить ( Ctrl-Z ).
  • Автоматический "кд .."( Ctrl-PgUp ).
  • Расширение переменной среды ( Ctrl-Alt-E ).
  • (нажмите Alt-H для многих других...)
  • Сценарий завершения с Луа.
  • Цветное и написанное по сценарию приглашение.
  • Автоматическое отклонение "Terminate пакетное задание? "подсказка.
1
0
 david
david
22-го марта 2018 в 2:52
2018-03-22T02:52:02+00:00
Дополнительно
Источник
Редактировать
#19469918

Ansi.sys (в папке system32) - это «драйвер MSDOS», предоставляемый как часть Windows XP, 2000 и более ранних версий NT. В 2000 и XP он находится в папке system32 (я не помню структуру более ранних версий NT). Программы, которые работают в подсистеме DOS и используют стандартный вывод, могут использовать ANSI.SYS так же, как они могли работать через MSDOS

Чтобы загрузить ansi.sys, Вы должны использовать команду device = или devicehigh = в конфигурации, так же, как в MSDOS. На Windows NT 5 (2K & XP) каждой копии подсистемы DOS может быть предоставлен отдельный файл конфигурации в pif / shortcut (использовать &"продвинутый &" кнопка) и есть файл по умолчанию под названием CONFIG.NT (также в папке system32) который используется, если pif / shortcut не указывает специальный файл конфигурации.

Когда ansi.sys загружен правильно, mem / d сообщит, что он загружен. В более ранних версиях NT вы можете и должны загрузить правильную среду DOS для загрузки ansi.sys, и ansi art будет работать в кратчайшие сроки. При Win 2K и XP загрузка ansi.sys не повлияет на вашу «поиск CMD», поскольку CMD - это не программа DOS: это 32-разрядная консольная программа Windows. По какой-то причине, которую я не понимаю, на WinXP, даже если вы загружаете фиксированную копию command.com с помощью «command.com / p», командная строка не будет включена ansi: возможно, когда вы делаете это таким образом, она только эмулирует загрузка command.com?

В любом случае, когда вы используете реальную DOS-версию command.com, ansi включается после загрузки: вы можете продемонстрировать его использование с небольшим количеством ansi art, как это:

command /c type ansiart.ans

(вот пример: http://artscene.textfiles.com/ansi/artwork/beastie.ans)

CONFIG.NT (в папке system32) содержит пример синтаксиса для загрузки драйверов устройств. Вам нужно быть администратором, чтобы редактировать этот файл по умолчанию, или вы можете сделать его копию.

В Win 2K и XP «сокращение» по умолчанию для MSDOS - это файл .PIF, а не файл .LNK. Если вы создаете файл .lnk в CMD, ты выиграл и № 39;t уметь устанавливать специальные файлы конфигурации и autoexec, он будет использовать CONFIG.NT по умолчанию. Если вы хотите использовать специальный файл конфигурации только для одного приложения DOS, Вы можете сделать копию &"MSDOS ярлык &" или вы можете сделать копию &"_default.pif" найден в вашей папке Windows.

 david
david
Редактировал ответ 22-го марта 2018 в 3:00
1
0
 bitlixi
bitlixi
10-го августа 2018 в 1:35
2018-08-10T01:35:11+00:00
Дополнительно
Источник
Редактировать
#19469920

В последнем win10 это может быть сделано с помощью SetConsoleMode (originMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING). См. https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#example

1
0
 user3137537
user3137537
14-го декабря 2016 в 2:40
2016-12-14T14:40:46+00:00
Дополнительно
Источник
Редактировать
#19469916

Может быть, ANSICON может помочь вам

Просто скачайте и извлеките файлы, в зависимости от ваших окон: 32-битный или 64-битный

Установите его с: ansicon -i

1
0
Arung Isyadi
Arung Isyadi
26-го июля 2018 в 1:33
2018-07-26T13:33:47+00:00
Дополнительно
Источник
Редактировать
#19469919

Я обнаружил, что этот инструмент работает для моей цели. Microsoft Color Tool от GitHub

Разархивируйте сжатый файл, затем откройте CMD с разрешением администрирования.

Перейдите в папку, где вы распаковываете файл в CMD

Затем выполните эту команду "colortool -b схема-имя"

Имя схемы необходимо заменить любым из следующих параметров:

  • campbell.ini
  • campbell-legacy.ini
  • cmd-legacy.ini
  • deuternopia.itermcolors
  • OneHalfDark.itermcolors
  • OneHalfLight.itermcolors
  • solarized_dark.itermcolors
  • solarized_light.itermcolors

В моем случае команда будет похожа на эту "colortool -b solarized_dark.itermcolors"

Нажмите прямо в окне консоли и выберите Свойства.

Вам не нужно менять какое-либо значение, просто нажмите «ОК», чтобы сохранить настройку. (Вы заметите, что ваш шрифт уже содержит цвета).

Консольная собственность

Затем перезапустите cmd или powerShell.

Цвет ANSI должен быть включен и работать с цветовой схемой, которую вы выбрали ранее.

0
0
 GeertVc
GeertVc
26-го января 2019 в 4:30
2019-01-26T16:30:58+00:00
Дополнительно
Источник
Редактировать
#19469921

Был такой же вопрос. Я установил ConEmu, и этот решил мою проблему.

0
0
Похожие сообщества 5
Microsoft Stack Jobs
Microsoft Stack Jobs
2 414 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
Pro Windows
Pro Windows
1 490 пользователей
Microsoft Windows и всё, что с этим связано. Правила: https://t.me/pro_windows/308448 Список интересных групп и каналов: https://github.com/goq/telegram-list
Открыть telegram
pro_winapi
pro_winapi
589 пользователей
Обсуждение вопросов программирования в OS Windows на C/C++ и других языках, связанных с API этой операционной системы
Открыть telegram
Инсайдеры Windows 18+
Инсайдеры Windows 18+
504 пользователей
Чат блога sterkin.ru и 📢 @sterkin_ru: Windows, Microsoft, Google, мобильный мир, игори, гаджеты и вело Помощь с проблемами Windows только в @winsiders_support Здесь нет: - политики, хамства и троллей - нарушений УК РФ и священного EULA - вашей рекламы
Открыть telegram
Сообщество разработчиков на Universal Windows Platform
Сообщество разработчиков на Universal Windows Platform
166 пользователей
Вам могут быть интересны: @csharpchat, @dotnetchat, @dotnettalks
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 3 дня назад
2
Денис Васьков
Зарегистрирован 4 дня назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
ID
JA
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией