C ++, буфер, содержащий сохраненный оператор, с использованием Ctrl + C

Я хочу создать простое консольное приложение Windows32 с использованием C ++, которое берет то, что хранится в буфере CTRL + C, и копирует его в массив символов или строку.

Пример: я выбираю слово «Hello», нажимаю CTRL + C, а затем программа помещает слово «Hello» (сохраненное в буфере) в массив символов.


person GianSegugio    schedule 25.05.2014    source источник
comment
Замечательная идея ?? Был ли вопрос? Или вы просто искали ссылку на API буфера обмена Windows?   -  person WhozCraig    schedule 25.05.2014
comment
@JoachimPileborg Я не знаю, шутите ли вы, но я думаю, что OP хочет скопировать текст, который находится в буфере обмена.   -  person Massa    schedule 25.05.2014
comment
Да @Massa, именно то, что вы сказали.   -  person GianSegugio    schedule 26.05.2014


Ответы (1)


Одна из проблем заключается в том, что CTRL-C не отправляется как обычное нажатие клавиши, как большинство других комбинаций CTRL-key, потому что CTRL-C - это Сигнал break и обрабатывается консолью специально для отправки специального сигнала прерывания вашему приложению, и если ваше приложение не обрабатывает его, оно будет завершено. Другая проблема заключается в том, что ввод с консоли обычно строковый, и вы получаете ввод только после того, как пользователь нажмет новую строку или клавишу Enter.

Возможное решение первой проблемы - использовать _ 1_, чтобы установить функцию-обработчик для перехвата сигнала, а в обработчике сообщить приложению, что был нажат CTRL-C.

Решение обеих проблем: измените режим консоли, чтобы не обрабатывать CTRL-C и отключить строковый ввод.

Также обратите внимание, что обычно CTRL-C используется для копирования выбранного содержимого в буфер обмена, а не из него, как правило, CTRL-V.


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

person Some programmer dude    schedule 25.05.2014
comment
Конечно, я плохо объяснил, извините, но я хочу получить (любым способом) только то, что хранится в буфере обмена. - person GianSegugio; 26.05.2014