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

Советы » Буфер обмена » Просмотр буфера обмена

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

.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com