Отключение вставки в консольном приложении - PullRequest
3 голосов
/ 28 сентября 2010

Итак, вот странный вопрос: есть ли способ отключить меню, которое вы получаете, нажимая кнопку «C: \» в левом верхнем углу консоли?

Я делаю игру для удовольствия, но это увлекло бы много удовольствия, если бы игроки могли вставлять слова в командную строку.

Я не нашел ни одной темы по этому поводу, поэтому мне было интересно, есть ли у кого-нибудь идея о том, как это сделать, или хотя бы обойти.

Заранее спасибо!

Редактировать: Будет ли простой reg-ex для любого ^ символьной работы? Или консоль не использует ^ C и ^ V?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

а) Используйте GetConsoleWindow , чтобы получить дескриптор окна;использовать подклассы и ловушки для фильтрации событий мыши и клавиатуры.Хотя этот подход, вероятно, имеет много скрытых препятствий, из-за особенностей реализации консоли Windows.

b) Используйте анализ времени.Измерьте временной интервал между нажатиями клавиш и игнорируйте ввод, если этот интервал неоправданно мал.Возможно, вам придется экспериментировать, чтобы найти критерий, который работает лучше всего.Возможно, лучше измерить продолжительность ввода слова ввода, а не межсимвольные интервалы.

Обратите внимание, что вставка текста в консоль Windows осуществляется с помощью имитации ввода с клавиатуры, т.е. когда вы вставляете что-то в консоль, консольное приложение наблюдаетпоследовательность событий нажатия клавиш / нажатия клавиш.

2 голосов
/ 28 сентября 2010

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

Я бы предположил, что лучшим решением было бы создать приложение winforms, вместо которого вы могли бы управлять вводом / выводом проще, чем в консольном приложении.

В противном случае одним из обходных путей может быть вызов Clipboard.Clear каждыйПриблизительно 100 мс, чтобы убедиться, что у них никогда не будет времени копировать и вставлять что-либо, пока вы не очистите это, но это, конечно, может расстроить и / или сбить пользователей с толку, если приложение работает в фоновом режиме и пытаетсявыполнить какую-то работу в другом программном обеспечении.

...