在Delphi中将文件复制到剪贴板

时间:2013-09-01 05:45:16

标签: delphi clipboard

有人知道如何在Delphi中复制文件吗?它喜欢在文件或文件夹上按Ctrl + C,然后我们可以在某处粘贴?我只知道如何通过Clipbrd Unit复制文本,但我不知道文件,文件夹! 请帮帮我!

2 个答案:

答案 0 :(得分:6)

使用CF_HDROP格式存储文件/文件夹的完整路径,或使用CF_SHELLIDLIST格式存储文件/文件夹的ITEMIDLIST。有关更多详细信息,请参阅MSDN:

Shell Clipboard Formats

或者,使用SHParseDisplayName()ILCreateFromPath()或其他类似功能将文件夹/文件路径转换为ITEMIDLIST值,然后使用SHCreateDataObject()从中创建IDataObject,然后将其传递给OleSetClipboard()

答案 1 :(得分:3)

剪贴板和拖放有许多共同之处。大多数用于支持拖放的库也具有剪贴板所需的全部功能。例如,检查这个lib: http://melander.dk/delphi/dragdrop/

它是免费的,有完整的源代码,并有很多例子,包括剪贴板操作。

其中一个例子是DragDrop \ Demos \ Unicode \ DragDropUnicode.dproj,它有弹出命令“复制到剪贴板”:

procedure TForm1.ActionFileCopyExecute(Sender: TObject);
begin
  if (FFiles = '') then
    DropFileSource1.Files.Text := LoadResString(0)
  else
    DropFileSource1.Files.Text := FFiles;

  DropFileSource1.CopyToClipboard;
end;

希望它有所帮助。