Delphi里面的TClipBoard为我们操作剪贴板提供了方便。获取剪贴板数据的一般步骤是:
- 打开剪贴板
- 获取指定格式的共享内存句柄
- 从共享内存复制数据
- 关闭剪贴板
放置剪贴板数据的一般步骤是:
- 打开剪贴板
- 复制数据到全局共享内存
- 把共享内存的句柄和对应格式交给剪贴板
- 关闭剪贴板
我们知道剪贴板上可以同时存在多种数据格式,这些格式是针对同一对象进行的不同描述。那么在Delphi里面如何放置多种数据格式到剪贴板上?很简单,打开剪贴板后,我们一个一个地把各种数据格式放到剪贴板上,放完了才关闭剪贴板。代码写法如下:
ClipBoard.Open;
try
ClipBoard.SetComponent(Memo1);
ClipBoard.AsText := ComponentToString(Memo1);
finally
ClipBoard.Close;
end;
附: ComponentToString来自Delphi Help
function ComponentToString(Component: TComponent): string;
var
BinStream: TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result := StrStream.DataString;
finally
StrStream.Free;
end;
finally
BinStream.Free
end;
end;