Главная страница
    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-1212953619
Elec3C
2008-06-08 23:33
2010.03.07
TKOLmdvXLGrid


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


15-1261575599
Fscivi
2009-12-23 16:39
2010.03.07
delphi. opengl


10-1164542794
vlad-mal
2006-11-26 15:06
2010.03.07
Утечка памяти (объекты TConnectionPoints/TConnectionPoint )


2-1262083308
citizen
2009-12-29 13:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский