有人知道如何在Delphi中复制文件吗?它喜欢在文件或文件夹上按Ctrl + C,然后我们可以在某处粘贴?我只知道如何通过Clipbrd Unit复制文本,但我不知道文件,文件夹! 请帮帮我!
答案 0 :(得分:6)
使用CF_HDROP
格式存储文件/文件夹的完整路径,或使用CF_SHELLIDLIST
格式存储文件/文件夹的ITEMIDLIST
。有关更多详细信息,请参阅MSDN:
或者,使用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;
希望它有所帮助。