Консоль Win32 - Backspace до последней строки - PullRequest
3 голосов
/ 28 марта 2011

Я пишу интерпретатор команд, такой как BASH, а \, за которым следует символ новой строки, подразумевает продолжение входного потока;как я могу реализовать это в Win32?

Если я использую режим консоли с ENABLE_LINE_INPUT, то пользователь не может нажать backspace , чтобы вернуться к предыдущей строке;Windows мешает ему это сделать.Но если я не установлю ENABLE_LINE_INPUT, то мне придется вручную перемещать курсор, что довольно утомительно, учитывая, что (1) пользователь мог перенаправить входной поток и (2) он может быть подвержен условиям гонки, и я бы предпочел, чтобы Windows сделал это, если смогу.

Есть ли способ получить новую строку и тоже ее съесть?


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

Если для этого потребуются недокументированные запросы портов CSRSS, я по-прежнему заинтересован!

1 Ответ

0 голосов
/ 31 марта 2011

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

Таким образом, любые правила, которые вы хотите установить для поведения консоли, полностьюдо вас.

Я могу ошибаться, говоря это, но я считаю, что консоль Win32 начиная с XP работает точно так же, и она просто прослушивает вывод на stdout;не должно быть никаких причин, по которым вы не можете сделать то же самое.

Надеюсь, это было полезно.

...