Терминал Windows - Форма Windows для встраивания cmd - PullRequest
2 голосов
/ 07 июня 2009

Я ищу способ встраивания cmd "Shell" в форму. Я хочу создать приложение на основе C #, которое будет действовать как терминал, лучше, чем окно Powershell (без вкладок) или cmd (без ничего). Просто запустите этих переводчиков в бэкэнде.

Полагаю, MS никогда не думала об этом. Есть идеи, что из элементов я мог бы использовать?

Спасибо, I / O

Ответы [ 3 ]

2 голосов
/ 07 июня 2009

Это не тривиальная задача, которую вы берете на себя. Мне известен один проект ( Console2 ), который в основном опрашивает экранный буфер нижележащего окна консоли и отображает его самостоятельно. У вас наверняка будут проблемы с интерактивными приложениями, такими как Far и тому подобное, поскольку они (а) полагаются на получение событий клавиатуры и (б) на управление своим экранным буфером. Обе вещи непристойны, если вам нужна подходящая оболочка для функциональности окна консоли. Также возможен ввод с помощью мыши (если не включен режим быстрого редактирования), что может вызвать дальнейшие головные боли.

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

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

0 голосов
/ 07 июня 2009

Вы можете использовать поле richtext и установить черный фон, а белый - белый. RTB вместо текстового поля для обработки больших объемов данных. Вам бы пришлось написать очень много кода для имитации терминала.

0 голосов
/ 07 июня 2009

Вероятно, было бы проще всего расширить класс Textbox и добавить логику, чтобы он вел себя как консоль (отвечая на события KeyPressed / KeyUp / KeyDown или аналогичные). Вы также можете добавить события для тех вещей, на которые ваша консоль должна реагировать. Например, добавьте событие CommandEntered.

Использование новой консоли на TextBox предоставляет вам возможности редактирования и отображения текстового поля «бесплатно», поэтому вам не нужно повторно реализовывать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...