Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

Просмотр буфера обмена


Пример на основе простого модуля-класса, осуществляющего просмотр буфера обмена.

 

 

unit ClipboardViewer;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs;

type

TForm1 = class (TForm)

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private

FNextViewerHandle : THandle;

procedure WMDrawClipboard ( var message : TMessage);

message WM_DRAWCLIPBOARD;

procedure WMChangeCBCHain ( var message : TMessage);

message WM_CHANGECBCHAIN;

public

end ;
var

Form1: TForm1;


implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin

// Проверяем работоспособность функции.

// При невозможности просмотра буфера обмена

// функция возвратит значение Nil.

FNextViewerHandle := SetClipboardViewer(Handle);

end ;

procedure TForm1.FormDestroy(Sender: TObject);
begin

// Восстанавливаем цепочки.

ChangeClipboardChain(Handle, FNextViewerHandle);

end ;

procedure TForm1.WMDrawClipboard ( var message : TMessage);
begin
// Вызывается при любом изменении содержимого буфера обмена

message .Result := SendMessage(WM_DRAWCLIPBOARD, FNextViewerHandle, 0 , 0 );

end ;

procedure TForm1.WMChangeCBCHain ( var message : TMessage);
begin

// Вызывается при любом изменении цепочек буфера обмена.

if message .wParam = FNextViewerHandle then begin

// Удаляем следующую цепочку просмотра. Корректируем внутреннюю переменную.

FNextViewerHandle := message .lParam;

// Возвращаем 0 чтобы указать, что сообщение было обработано

message .Result := 0 ;

end else begin

// Передаем сообщение следующему окну в цепочке.

message .Result := SendMessage(FNextViewerHandle, WM_CHANGECBCHAIN,

message .wParam, message .lParam);

end ;

end ;


end .

[Оглавление]

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz