Отслеживание изменения буфера обмена в консольном приложении win32? - PullRequest
0 голосов
/ 02 декабря 2018

В настоящее время я делаю консольное приложение win32 на c ++.

Теперь я должен отреагировать на изменение пользователем содержимого буфера обмена.В настоящее время я просто проверяю, нажимает ли пользователь Ctrl + C, но, очевидно, этого недостаточно, поскольку он не отслеживает нажатие правой кнопкой мыши> Копировать и т. Д.

К сожалению, я не могу просто использовать winmessage, так как я разрабатываюконсольное приложение, следовательно, мое приложение не имеет своего собственного hwnd.

И я действительно не хочу копировать данные буфера обмена 10 раз в секунду или около того.Это может вызвать проблемы с другими программами, так как мне приходится каждый раз блокировать и разблокировать буфер обмена.

Есть предложения?

1 Ответ

0 голосов
/ 02 декабря 2018

Для отслеживания изменений в буфере обмена вы можете использовать API AddClipboardFormatListener :

Когда окно добавлено в список слушателей формата буфера обмена, оно публикуется WM_CLIPBOARDUPDATE сообщение, когда содержимое буфера обмена изменилось.

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

Окно только для сообщений позволяет отправлять и получать сообщения.Это не видно [...].Окно просто отправляет сообщения.

...