Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2010, 15:46   #1
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию Наблюдение за буфером обмена в безоконном приложении

Подскажите, пожалуйста, как это реализовать, пробовал так, но не выходит…
Код:
while GetMessage(Msg, GetClipboardViewer, 0, 0) do
begin
  TranslateMessage(Msg);
  if Msg.message=WM_DRAWCLIPBOARD then 
end;

Последний раз редактировалось Gerzs; 07.07.2010 в 15:54.
Gerzs вне форума Ответить с цитированием
Старый 07.07.2010, 16:21   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ну ясен перец так не получится - здесь Вы обрабатываете свои сообщения, а не системные. Гуглим по форуму хуки.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.07.2010, 16:33   #3
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

С хуками не очень хороший вариант – нужно что б обработчик сообщения «ждал» пока загрузятся данные в буфер обмена… Как для данного случая можно еще это реализовать?

Последний раз редактировалось Gerzs; 07.07.2010 в 16:36.
Gerzs вне форума Ответить с цитированием
Старый 07.07.2010, 20:00   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

SetClipboardViewer для начало, а потом уже то сообщение что у вас указано.
помоему нужно как минимум невидимое окно, ибо я не уверен чтов сам поток можно постить(точнее вивером его делать)
особенности:
Цитата:
The WM_DRAWCLIPBOARD message is sent to the first window in the clipboard viewer chain when the content of the clipboard changes. This enables a clipboard viewer window to display the new content of the clipboard.

WM_DRAWCLIPBOARD


Parameters

This message has no parameters.

Remarks

Only clipboard viewer windows receive this message. These are windows that have been added to the clipboard viewer chain by using the SetClipboardViewer function.
Each window that receives the WM_DRAWCLIPBOARD message must call the SendMessage function to pass the message on to the next window in the clipboard viewer chain. The handle of the next window in the chain is returned by SetClipboardViewer, and may change in response to a WM_CHANGECBCHAIN message.
Цитата:
The WM_CHANGECBCHAIN message is sent to the first window in the clipboard viewer chain when a window is being removed from the chain.

WM_CHANGECBCHAIN
hwndRemove = (HWND) wParam; // handle of window being removed
hwndNext = (HWND) lParam; // handle of next window in chain


Parameters

hwndRemove

Value of wParam. Identifies the window being removed from the clipboard viewer chain.

hwndNext

Value of lParam. Identifies the next window in the chain following the window being removed. This parameter is NULL if the window being removed is the last window in the chain.



Return Values

If an application processes this message, it should return zero.

Remarks

Each clipboard viewer window saves the handle of the next window in the clipboard viewer chain. Initially, this handle is the return value of the SetClipboardViewer function.
When a clipboard viewer window receives the WM_CHANGECBCHAIN message, it should call the SendMessage function to pass the message to the next window in the chain, unless the next window is the window being removed. In this case, the clipboard viewer should save the handle specified by hwndNext as the next window in the chain.
следующее окно вы должны запоминать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с буфером обмена. star007 Помощь студентам 0 16.06.2010 20:37
Excel работа с буфером обмена S0ny Microsoft Office Excel 4 19.05.2010 12:09
Не могу разобраться с буфером обмена Morphling Общие вопросы Delphi 1 25.04.2010 19:46
Работа с буфером обмена Gerzs Общие вопросы Delphi 2 26.03.2010 15:15
Работа с буфером обмена АлексейМк Общие вопросы C/C++ 1 05.08.2009 00:24