Консольное приложение для эмуляции командной строки - PullRequest
2 голосов
/ 15 апреля 2010

Я занимаюсь разработкой консольного приложения. Мне нужно эмулировать поведение утилиты командной строки при нажатии кнопки F7, как показано ниже:

alt text

Возможно ли это в C # 2008? Если нет, есть ли обходной путь?

Любая помощь высоко ценится.

Ответы [ 2 ]

1 голос
/ 15 апреля 2010

Я не уверен, что .NET включает в себя оболочки для них или вам придется использовать их через P / Invoke, но Win32 API включает в себя функции для этого. Например, вы можете использовать ReadConsoleOutput, чтобы прочитать блок дисплея, который вы собираетесь скрыть. Тогда вы будете использовать WriteConsoleOutput для отображения списка (включая границу). Как только вы закончите с оверлеем, вы восстановите предыдущий контент другим вызовом WriteConsoleOutput, указав блок, в котором вы сохранили базовые данные.

Редактировать: при быстрой проверке правильная функциональность все равно не бросается в глаза. Может быть, я упускаю что-то очевидное, хотя ...

0 голосов
/ 15 апреля 2010

В Windows есть целый API для написания приложений «Консольного режима». Он позволяет прослушивать ввод с помощью мыши или клавиатуры в зависимости от события, а также устанавливать цвет текста и фона, позиционировать курсор и т. Д.

Чтобы создать поле, подобное тому, которое отображается в CMD.EXE, вы используете определенные специальные символы для создания границы (есть различные угловые элементы и края - используйте приложение Character Map, чтобы увидеть их все).

Чтобы использовать API консоли из C #, вам, вероятно, нужно использовать pinvoke, например,

[DllImport("kernel32.dll")] 
public static extern bool SetConsoleTextAttribute(
                            IntPtr hConsoleOutput, int wAttributes);

См. Документы для SetConsoleTextAttribute , чтобы узнать, как использовать его для установки цвета.

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