Пример кода терминала Windows

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

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

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

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

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

Пример шейдера ретро-пикселей терминала

Пример приложения 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 Demo.