ファイルを削除してゴミ箱に移動させたい。
|
SHFileOperation関数を使えば、ファイル単位でもフォルダーごとでもゴミ箱に移動させることができます。
注意事項としては、必ずフルパスでなければならないということです。
ちょっと変な関数名ですが・・・
Uses Shellapi;
procedure SendToRecycleBin(FileList: TStrings; Dlg: boolean);
var
LpFileOp:TSHFILEOPSTRUCT;
FileNames: string;
i: integer;
begin
if FileList.Count = 0 then exit;
// #0をデリミタとした文字列を作る
for i := 0 to FileList.Count - 1 do
FileNames := FileNames + FileList[i] + #0;
// ターミネイタにもう一度#0をつける
FileNames := FileNames + #0;
with LpFileOp do
begin
Wnd := Application.Handle;
wFunc := FO_DELETE;
pFrom := PChar(FileNames);
pTo:= nil;
fFlags := FOF_ALLOWUNDO;
if not Dlg then fFlags := fFlags or FOF_SILENT;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(LpFileOp);
end;
// テスト
procedure TForm1.Button1Click(Sender: TObject);
var
Flist :TStrings;
begin
Flist := TStringlist.Create;
try
Flist.Add('C:\Program Files\Borland\Delphi 4\Projects\*.~df');
Flist.Add('C:\Program Files\Borland\Delphi 4\Projects\*.~pa');
SendToRecycleBin(FList, true);
finally
Flist.free;
end;
end; |
|