Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
11-1212750381
misha_shar
2008-06-06 15:06
2010.03.07
вопрос по KOLPrinters


2-1262076709
tipman
2009-12-29 11:51
2010.03.07
Узнать о завершении работы потока, как?


2-1262780530
Иван
2010-01-06 15:22
2010.03.07
Выделение слов в RichEdit на лету


2-1262182249
11223344
2009-12-30 17:10
2010.03.07
классы


15-1261503380
xayam
2009-12-22 20:36
2010.03.07
Когда истина зависит от терминологии - часть 2





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский