0

我的复制代码:

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。

4

0 回答 0