2014-08-29 2 views
3

Мне нужно обработать содержимое буфера обмена в фоновом приложении.Как отслеживать изменения буфера обмена в фоновом режиме с помощью C++

Как я могу это сделать?

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

Я знаю функцию чтения и записи, такую ​​как GetClipboardData() и SetClipboardData().

Есть идеи, как это сделать на C++?

Заранее благодарен!

ответ

2

Взгляните на Monitoring Clipboard Contents:

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

Add the window to the clipboard viewer chain. 
Process the WM_CHANGECBCHAIN message. 
Process the WM_DRAWCLIPBOARD message. 
Remove the window from the clipboard viewer chain before it is destroyed. 

Добавление окна в буфер обмена просмотра цепочки:

case WM_CREATE: 

    // Add the window to the clipboard viewer chain. 

    hwndNextViewer = SetClipboardViewer(hwnd); 
    break; 

Обработка WM_CHANGECBCHAIN ​​сообщение:

case WM_CHANGECBCHAIN: 

    // If the next window is closing, repair the chain. 

    if ((HWND) wParam == hwndNextViewer) 
     hwndNextViewer = (HWND) lParam; 

    // Otherwise, pass the message to the next link. 

    else if (hwndNextViewer != NULL) 
     SendMessage(hwndNextViewer, uMsg, wParam, lParam); 

    break; 
+3

На этой же странице: «В новых программах должны использоваться слушатели формата буфера обмена или порядковый номер буфера обмена». Используйте AddClipboardFormatListener. –

+0

Правильно, это третий способ, но первый из них - просмотрщик буфера обмена: «Самый старый метод - создать окно просмотра буфера обмена». У ОП есть выбор :) – duDE

+0

спасибо всем! :) – g00dv1n

2

С Windows Vista правильный способ - использовать прослушиватели форматов буфера обмена:

case WM_CREATE: 
    // ... 
    AddClipboardFormatListener(hwnd); 
    // ... 

case WM_DESTROY: 
    // ... 
    RemoveClipboardFormatListener(hwnd); 
    // ... 

case WM_CLIPBOARDUPDATE: 
    // Clipboard content has changed 

См Monitoring Clipboard Contents:

Есть три способа мониторинга изменений в буфер обмена. Самый старый метод - создать окно просмотра буфера обмена. Windows 2000 добавила возможность запрашивать порядковый номер буфера обмена, а Windows Vista добавила поддержку для прослушивателей формата буфера обмена. Окна просмотра буфера обмена поддерживаются для обратной совместимости с более ранними версиями Windows. Новые программы должны использовать прослушиватели формата буфера обмена или порядковый номер буфера обмена.