我的目标是将特定的文件从回收站恢复到指定的位置,即不是恢复到其原始位置。我找到了this article和this one,它们解释了如何枚举回收站中当前的文件。但它并没有告诉我如何做我需要的事情。
你知道怎么做吗?
发布于 2015-03-19 03:03:11
你可以通过模拟拖放来实现。使用IShellFolder::GetUIObjectOf()从回收站获取IDataObject接口,并为目标文件夹获取IDropTarget接口。然后,您可以调用IDropTarget::DragEnter(),然后调用IDropTarget::Drop(),文件将被移动到您的目标位置。
发布于 2015-03-19 11:51:32
从Windows Vista开始,可以使用IFileOperation将RecycleBin中的任何对象恢复到任何文件夹。使用示例:
procedure RestoreItem(AShellFolder: IShellFolder; AChild: PItemIDList; const ADestFolder: UnicodeString);
var
Item: IShellItem;
DestFolder: IShellItem;
FileOperation: IFileOperation;
begin
OleCheck(SHCreateItemWithParent(nil, AShellFolder, AChild, IShellItem, Item));
try
OleCheck(SHCreateItemFromParsingName(PWideChar(ADestFolder), nil, IShellItem, DestFolder));
try
OleCheck(CoCreateInstance(CLSID_FileOperation, nil, CLSCTX_ALL, IFileOperation, FileOperation));
try
OleCheck(FileOperation.MoveItem(Item, DestFolder, nil, nil));
OleCheck(FileOperation.PerformOperations);
finally
FileOperation := nil;
end;
finally
DestFolder := nil;
end;
finally
Item := nil;
end;
end;发布于 2021-06-05 22:38:14
拖放是最好的方式。
然后你可以用C++,Python,CMD,PowerShell等编写脚本。

https://stackoverflow.com/questions/29129717
复制相似问题