size : 1724
uploaded_on : Mon Nov 9 00:00:00 1998
modified_on : Wed Dec 8 14:03:26 1999
title : Clipboard viewer
org_filename : ClipbrdView.txt
author : Erik Sperling Johansen
authoremail : erik@info-pro.no
description : Example source to implement a clipboard viewer
keywords :
tested : not tested yet
submitted_by : Unofficial Delphi Developers FAQ
submitted_by_email : uddf@gnomehome.demon.nl
uploaded_by : nobody
modified_by : nobody
owner : nobody
lang : plain
file-type : text/plain
category : delphi-system32bit
__END_OF_HEADER__
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
// Hook the clipboard viewer chain
// Should also check for a possible null return value, which indicates
// that the function failed.
FNextViewerHandle := SetClipboardViewer(Handle);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Remove ourselves from the clipboard viewer chain.
ChangeClipboardChain(Handle, FNextViewerHandle);
end;
procedure TForm1.WMDrawClipboard (var message : TMessage);
begin
// Called whenever contents of the clipboard changes
message.Result := SendMessage(WM_DRAWCLIPBOARD, FNextViewerHandle, 0, 0);
end;
procedure TForm1.WMChangeCBCHain (var message : TMessage);
begin
// Called when there is a change in the Clipboard viewer chain.
if message.wParam = FNextViewerHandle then begin
// the next viewer in the chain is being removed. Update our internal var.
FNextViewerHandle := message.lParam;
// Return 0 to indicate message was processed
message.Result := 0;
end else begin
// Pass message on to next window in chain.
message.Result := SendMessage(FNextViewerHandle, WM_CHANGECBCHAIN,message.wParam, message.lParam);
end;
end;
end.