Возможно программно очистить консольную историю?

При работе с консольным приложением, историей всего, что было введено в a Console.ReadLine() хранится. Когда при консольной подсказке для ввода чего-то нажимая/вниз курсор просмотрит эту историю путем прокрутки (и целая история может быть просмотрена путем нажатия F7).

Используя C#, существует способ или отключить это поведение или очистить историю того, что было уже введено?


Разъясниться, Console.Clear() не очищает историю, только экранный буфер. Я хочу очистить историю команд.


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

9
задан adrianbanks 14 July 2010 в 07:02
поделиться

5 ответов

Изменить: удален неправильный ответ (я запутался в том, что вы хотели сделать) и добавил еще один (надеюсь) лучший ответ.

Это можно сделать, освободив текущую консоль с помощью FreeConsole , а затем выделив новую консоль с помощью AllocConsole . Я бы предположил, что тогда он не сохранит историю командной строки.

В общем, если вы хотите делать с консолью что-то, что не поддерживается .Net Framework, лучше всего поискать на этой странице MSDN: Функции консоли

1
ответ дан 3 November 2019 в 04:40
поделиться

Может ли эта публикация на Как мне настроить историю командной строки, DOSKEY? help?

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

Чтобы очистить текущую историю командной строки, используйте команду:

 doskey / переустановить

При желании вы также можете указать, сколько старых команд оставить, с помощью параметра / listsize

 doskey / install / listsize = 50

сохранит 50 старых команд.

Пожалуйста, дайте мне знать, работает ли он и как вы его использовали :)

4
ответ дан 3 November 2019 в 04:40
поделиться

Взгляните на SetConsoleHistoryInfo . Согласно документации, он работает только в Vista и более поздних версиях, поэтому я не уверен, поможет ли это вам или нет.

1
ответ дан 3 November 2019 в 04:40
поделиться

Вы можете попробовать использовать свойство

Console.BufferHeight : "This property defines the number of rows (or lines) stored in the buffer that is accessed by a console mode window"
0
ответ дан 3 November 2019 в 04:40
поделиться

Кажется, согласно MSN (http://msdn.microsoft.com/en-ie/library/system.console_members.aspx) метод console.clear() "Очищает буфер консоли..."

0
ответ дан 3 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: