作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要以多种格式将数据放在剪贴板上,一种是 RTF。我正在使用的组件可以很好地处理除 RTF 之外的所有内容。如何在不删除祖先类已经放置在那里的数据的情况下 append RTF 格式数据?如果有办法,我试图避免将剪贴板逻辑从副本中的祖先复制到剪贴板例程。
最佳答案
您可以通过执行以下操作 append 到现有剪贴板数据:
Clipboard.Open
. Clipboard.SetAsHandle
, 或 SetClipboardData
通过你的 RTF。 Clipboard.Close
. Open/Close
内配对你会得到想要的效果。
procedure SetBuffer(Format: Word; const Buffer; Size: Integer);
var
DataPtr: Pointer;
Data: THandle;
begin
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock(Data);
try
Move(Buffer, DataPtr^, Size);
Win32Check(SetClipboardData(Format, Data) <> 0);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
const
Text: string = 'foo';
begin
Clipboard.Open;
try
// imagine this next block is the base component's method to set the clipboard
Clipboard.Open;
try
Bitmap := GetFormImage;
try
Clipboard.Assign(Bitmap);
finally
Bitmap.Free;
end;
finally
Clipboard.Close;
end;
// once that is done, we can add out extra data
SetBuffer(CF_UNICODETEXT, Text[1], ByteLength(Text));
finally
Clipboard.Close;
end;
end;
关于delphi - 如何在不删除现有数据的情况下以新格式将数据 append 到现有剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728793/
我是一名优秀的程序员,十分优秀!