Главная страница
    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
15-1260997140
Кто б сомневался
2009-12-16 23:59
2010.03.07
Web при помощи Delphi


15-1261527698
KilkennyCat
2009-12-23 03:21
2010.03.07
VBA и application.processmessage


15-1261465203
MonoLife
2009-12-22 10:00
2010.03.07
Кто-нибудь пользуется yahoo почтой?


2-1262082279
ford
2009-12-29 13:24
2010.03.07
прочитать файл


2-1262255716
Александр К
2009-12-31 13:35
2010.03.07
Помогите перевести с c++ в pas (Оочень маленький участок кода)





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