Я хочу сделать простое консольное приложение для Windows32 с использованием C ++, которое принимает то, что хранится в CTRL+С буфера и копирует его в массив символов или строку.
Пример: я выбираю слово «Hello», я нажимаю CTRL+С а затем программа поместила слово «Hello» (хранится в буфере) в массив символов.
Одна проблема в том, что CTRL-C не отправляется как обычное нажатие клавиши, как большинство других CTRL-ключ комбинации, это потому что CTRL-C это перерыв сигнал и обрабатывается консолью специально для отправки специального сигнала прерывания вашему приложению, и если ваше приложение не обрабатывает его, то оно будет прервано. Другая проблема заключается в том, что ввод с консоли обычно основан на строках, и вы получаете ввод только после того, как пользователь нажал на новую строку или Войти ключ.
Возможным решением для первой проблемы является использование SetConsoleCtrlHandler
функция, чтобы установить функцию обработчика, чтобы поймать сигнал, и в обработчике сказать приложению, что CTRL-C был нажат.
Решение обеих проблем заключается в изменить режим консоли не обрабатывать CTRL-C, и отключить линейный ввод.
Также обратите внимание, что обычно CTRL-C используется для копирования выбранного контента в в буфер обмена, а не из, который обычно Ctrl-V.
Но обработка нажатий клавиш является лишь небольшой частью проблемы, так как вам придется работать с буфер обмена для фактического копирования-вставки.