Hola de nuevo.
A ver de este modo entonces...
Código Delphi
[-]
...
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FChgHwnd : THandle;
procedure WMDrawClipboard(var Msg: TMessage) ; message WM_DRAWCLIPBOARD;
procedure WMChangeCBChain(var Msg: TMessage) ; message WM_CHANGECBCHAIN;
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
uses Clipbrd;
procedure TForm1.FormCreate(Sender: TObject);
begin
Clipboard.Clear;
FChgHwnd := SetClipboardViewer(Handle) ;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ChangeClipboardChain(Handle, FChgHwnd) ;
end;
procedure TForm1.WMChangeCBChain(var Msg: TMessage);
begin
if FChgHwnd = Msg.WParam then
FChgHwnd := Msg.LParam
else if FChgHwnd <> 0 then
SendMessage(FChgHwnd, WM_CHANGECBCHAIN, Msg.WParam, Msg.LParam);
end;
procedure TForm1.WMDrawClipboard(var Msg: TMessage);
begin
if Clipboard.HasFormat(CF_TEXT) then
begin
Memo1.Lines.Clear;
Memo1.Text := Clipboard.AsText;
end;
if FChgHwnd <> 0 then
SendMessage(FChgHwnd, WM_DRAWCLIPBOARD, 0, 0)
end;
end.
Saludos