Терминал Windows: пример кода

Изучите некоторые из примеров кода, размещенных в репозитории Терминала Windows, включая примеры .hlsl пиксельных шейдеров, пример псевдоконсоли Win32 EchoCon ConPTY, пример консоли WPF GUIConsole для .NET, пример MiniTerm с использованием базовых вызовов API PTY, а также демонстрацию ReadConsoleInputStream для мониторинга событий консоли во время потоковой передачи ввода символов.

Шейдеры пикселей

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

Терминал Windows позволяет пользователям предоставлять пиксельный шейдер, применяемый к терминалу, путем добавления свойства experimental.pixelShaderPath в профиль в файле settings.json. Пиксельные шейдеры написаны на языке, HLSL, C-подобном языке с некоторыми ограничениями.

Попробуйте один из нескольких примеров .hlsl пиксельных шейдеров, представленных в репозитории Windows Terminal: пиксельные шейдеры.

Terminal Retro Pixel Shader sample

Пример приложения EchoCon ConPTY

В этом примере приложения показано, как использовать псевдоконсоль Win32 (ConPTY), выполнив следующие операции:

  1. Создание входного и выходного канала.
  2. Вызов CreatePseudoConsole() для создания экземпляра ConPTY, подключенного к другому концу каналов.
  3. Создание экземпляра ping.exe, подключенного к ConPTY.
  4. Запуск потока, который прослушивает вывод ping.exe, записывая полученный текст в консоль.

Посетите репозиторий Терминала Windows, чтобы ознакомиться с этим примером: пример приложения EchoCon ConPTY.

Пример приложения GUIConsole

Это пример приложения представляет структуру настраиваемой консоли WPF.

В этом примере вы найдете:

  • GUIConsole.WPF — приложение WPF для .NET 4.6.1, которое создает одно окно WPF, которое действует как консоль и сохраняет видимую базовую консоль.

  • GUIConsole.ConPTY — библиотека .NET Standard 2.0, которая поддерживает создание консоли и поведение псевдоконсоли. Файл Terminal.cs содержит общедоступные компоненты, с которыми будет взаимодействовать приложение WPF. Terminal.cs предоставляет два компонента, которые позволяют выполнять чтение из консоли и запись в нее:

    • ConsoleOutStream — FileStream подключаетя к выходному каналу псевдоконсоли. При этом выводится VT100.
    • WriteToPseudoConsole(ввод строки) — метод, который берет указанную строку и записывает ее в псевдоконсоль через свой канал ввода. При этом принимается VT100.

Посетите репозиторий Терминала Windows, чтобы ознакомиться с этим примером: GUIConsole.

Пример приложения MiniTerm

Этот экспериментальный терминал демонстрирует основные вызовы API (не предназначенные для реального использования) с применением API-интерфейсов PTY от корпорации Майкрософт. Он написан на C# и сильно зависит от примеров машинного кода.

Посетите репозиторий Терминала Windows, чтобы ознакомиться с этим примером: MiniTerm.

Демонстрация ReadConsoleInputStream

Демонстрация асинхронного мониторинга событий консоли (таких как операции с помощью мыши и меню, изменение фокуса, изменение размера буфера или области просмотра) при одновременной потоковой передаче представления ввода символов из консоли. Эта функция особенно полезна при работе с потоками VT100 и ConPTY.

Посетите репозиторий Терминала Windows, чтобы ознакомиться с этой демонстрацией: демонстрация ReadConsoleInputStream.