我的复制代码:
if OpenClipboard(mainwnd.Handle) then
MemHandle := GlobalAlloc(GHND or GMEM_SHARE, Succ(StrLen(pLclCopies)));
if MemHandle <> 0 Then
Begin
try
StrCopy(GlobalLock(MemHandle), pLclCopies);
GlobalUnlock(MemHandle);
SetClipboardData(cf_LocalVar,MemHandle);
Finally
CloseClipboard;
GlobalFree(MemHandle);
end;
end;
和我的粘贴代码:
if clipboard.HasFormat(cf_LocalVar) then
begin
ClipBoard.Open;
try
MyHandle := Clipboard.GetAsHandle(cf_LocalVar);
LocalsTextPtr := GlobalLock(MyHandle);
CheckForCopiedLocals(LocalsTextPtr, TextPtr); //What I do with the pasted data.
GlobalUnLock(MyHandle);
finally
Clipboard.Close;
end;
end;
我的目标是不仅要从我的程序中的特殊编辑器中复制文本,还要复制与该编辑器相关的一些底层变量数据。大多数一切似乎都在剪贴板方面运行良好 - 我看到了我复制的文本,并且“cf_LocalVar”格式出现在 Windows 上的剪贴簿查看器中。
当我到达粘贴端并且该行
LocalsTextPtr := GlobalLock(MyHandle);
没有从代码的第一位获取复制的数据时。我看到它进入 pLclCopies 但不能确定它是否存储在剪贴板中。
注意我已经从我的代码中遗漏了空剪贴板,因为这将摆脱我需要的 cf_text 以及 cf_LocalVar。