Как интегрировать окно консоли в приложение, такое как VSCode?

Как и встроенная консоль Visual Studio Code, я хотел бы знать, как она реализована.

Я попытался прочитать исходный код VSCode, и я обнаружил, что он использует xterm.js для предоставления терминала. Затем я попытался прочитать исходный код xterm.js, но я не нашел никакого собственного (?) Кода о создании или интеграции терминала.

Может быть, я что-то пропустил, пожалуйста, дайте мне совет, если сможете.

Это дочерний процесс с его окном SetParentв родительский?

Редактировать:

Моя цель - встроить консольное окно в мое приложение, чтобы я мог быстро запускать некоторые скрипты при его использовании, как и опыт в VS Code.

Извините за двусмысленность в исходном вопросе.

c++,windows,winapi,visual-studio-code,

-1

Ответов: 1


1

VS Code создает именованные каналы для ввода / вывода консоли, а затем запускает процесс winpty-agent.exe, а также файл powershell.exe. winpty-agent.exe открывает именованные каналы для CONIN $ и CONOUT $, и все входные данные в окне терминала, привязанные к VSCode, либо используют Read / WriteFile для передачи информации в каналы и из них, которые затем передаются в скрытое окно терминала, порожденное powershell.exe. Трубы записываются и считываются с каждого момента ввода символа.

winpty-agent.exe также делает окно PowerShell порожденным из powershell.exe дочерним окном и скрывает его с помощью флага SW_HIDE. Когда состояние видимости окна имеет флаг SW_SHOW, можно видеть, что каждый раз, когда что-то вводится в терминал, связанный с VSCode, также вводится одновременно в скрытое окно терминала PowerShell.

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

C ++, окно, WinAPI, зрительно-студия-код,
Похожие вопросы