Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

Буфер обмена   Найти похожие ветки 

 
webpauk ©   (2010-01-06 12:56) [0]

Подскажите как отловить попадание информации в буфер обмена.
Через таймер - не катит!


 
stas ©   (2010-01-06 13:15) [1]

это?
http://www.delphisources.ru/pages/faq/base/clipboard_hook.html


 
webpauk ©   (2010-01-06 13:34) [2]

ок


 
sniknik ©   (2010-01-06 14:00) [3]

> это?
вряд ли. судя по второму  его вопросу. автор за долгое время на форуме так и не научился задавать вопросы.


 
Anatoly Podgoretsky ©   (2010-01-06 14:11) [4]

Это навечно.


 
Юрий Зотов ©   (2010-01-06 14:52) [5]

> All

Хороший пример по ссылке в [1], но я бы поместил регистрацию/разрегистрацию вьювера не в обработчики событий OnCreate/OnDestroy, а в замещенные методы CreateWindowHandle/DestroyWindowHandle соответственно.

Иначе при пересоздании окна вьювера (а такое бывает нередко - например, при изменении стиля окна) его функциональность нарушится.

Короче, вот мой вариант (выдрано из какого-то старого примера):

type
 TForm1 = class(TForm)
 private
   FNextViewer: HWND;
   procedure WMChangeCBChain(var Message: TWMChangeCBChain); message WM_CHANGECBCHAIN;
   procedure WMDrawClipboard(var Message: TWMDrawClipboard); message WM_DRAWCLIPBOARD;
 protected
   procedure CreateWindowHandle(const Params: TCreateParams); override;
   procedure DestroyWindowHandle; override;
 end;

uses
 Clipbrd;

procedure TForm1.CreateWindowHandle(const Params: TCreateParams);
begin
 inherited CreateWindowHandle(Params);
 FNextViewer := SetClipboardViewer(Handle)
end;

procedure TForm1.DestroyWindowHandle;
begin
 ChangeClipboardChain(Handle, FNextViewer);
 inherited
end;

procedure TForm1.WMChangeCBChain(var Message: TWMChangeCBChain);
begin
 with Message do
 begin
   Result := 0;
   if Remove = FNextViewer then
     FNextViewer := Next
   else
     if FNextViewer <> 0 then
       Result := SendMessage(FNextViewer, Msg, Remove, Next)
 end
end;

procedure TForm1.WMDrawClipboard(var Message: TWMDrawClipboard);
begin
 if Clipboard.HasFormat(CF_TEXT) then
   Caption := "Есть текст"
 else
   Caption := "Нет текста";
 with Message do
   if FNextViewer <> 0 then
     Result := SendMessage(FNextViewer, Msg, 0, 0)
   else
     Result := 0
end;



Страницы: 1 вся ветка

Текущий архив: 2010.03.07;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.005 c
2-1261998265
ZXZ_RUS
2009-12-28 14:04
2010.03.07
Добавление компанента по нажатию на баттон!


15-1261171821
Юрий
2009-12-19 00:30
2010.03.07
С днем рождения ! 19 декабря 2009 суббота


15-1261389087
AntonioBanderas
2009-12-21 12:51
2010.03.07
Компонент "Линия"


4-1229691321
Ort
2008-12-19 15:55
2010.03.07
Неправильно работает нажатие на клавиши


6-1211355931
lead-in
2008-05-21 11:45
2010.03.07
посылка сообщения в локальной сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский