![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Буфер обмена [D7, XP]
webpauk © (2010-01-06 12:56:00)Подскажите как отловить попадание информации в буфер обмена.
Через таймер - не катит!
Юрий Зотов (2010-01-06 14:52:00) [1]> 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;
Anatoly Podgoretsky (2010-01-06 14:11:00) [2]Это навечно.
sniknik (2010-01-06 14:00:00) [3]> это?
вряд ли. судя по второму его вопросу. автор за долгое время на форуме так и не научился задавать вопросы.
webpauk (2010-01-06 13:34:00) [4]ок
stas (2010-01-06 13:15:00) [5]это?
http://www.delphisources.ru/pages/faq/base/clipboard_hook.html