File mit SHFileOperation in Papierkorb versch. geht nicht
Hi,
Ich hab des Katers (in manchen Kreisen auch als "Sakura" o.Ä bekannt) function "DoFileWork" aus der CodeLibrary verwendet, jedoch hab ich da mal ne Frage zu den Parametern FOF_ALLOWUNDO etc. Ich will mit folgendem Code ein paar Dateien, die in einer Listbox stehen, in den Papierkorb verschieben (so, dass man sie notfalls noch wiederherstellen kann): sakuras function:
Delphi-Quellcode:
Meine Verwendung:
function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString;
Flags: FILEOP_FLAGS): Integer; var FromPath, ToPath: AnsiString; SHFileOpStruct: TSHFileOpStruct; begin FromPath := aFrom + #0#0; ToPath := aTo + #0#0; with SHFileOpStruct do begin Wnd := Application.Handle; wFunc := aOperation; pFrom := PAnsiChar(FromPath); if ToPath <> '' then pTo := PAnsiChar(ToPath) else pTo := nil; fFlags := Flags; end; Result := SHFileOperationA(SHFileOpStruct); end;
Delphi-Quellcode:
procedure TForm3.Dateilschen1Click(Sender: TObject); //Dateilschen1 ist ein PopUp-MenuItem
var a : integer; s : string; begin if MessageDlg('Datei(en) wirklich endgültig löschen?', mtConfirmation, [mbYes, mbNo], 0) = idYes then begin //#0 immer dazwischensetzen s := ''; if LbFiles.SelCount > 1 then begin for a := 0 to LbFiles.SelCount-1 do s := s + LbFiles.Items[LbFiles.itemindex-(LbFiles.SelCount-1)+a] + #0; s := copy(s, 0, length(s)-1); //<--- letztes #0 entfernen end else s := LbFiles.Items[LbFiles.ItemIndex]; DoFileWork(FO_DELETE, s, '', FOF_NOCONFIRMATION); //Das geht nicht!! LbFiles.DeleteSelected; end; end; Problem dabei: Die Dateien sind zwar weg, aber er hat sie nicht in den Papierkorb verschoben, der ist leer :gruebel: Wenn ich statt FOF_NOCONFIRMATION aber FOF_ALLOWUNDO nehme, dann sind die Dateien drin, wie sie sollen, nur will ich nicht immer bestätigen müssen! Woran liegt das? |
Re: File mit SHFileOperation in Papierkorb versch. geht nich
FOF_NONCONFIRMATION or FOF_ALLOWUNDO
|
Re: File mit SHFileOperation in Papierkorb versch. geht nich
ah, alles klar, eigentlich seeeehr naheliegend... :zwinker:
|
Re: File mit SHFileOperation in Papierkorb versch. geht nich
da fällt mir noch ein:
Manchmal funktioniert die Dateioperation ja nicht, weil z.B. die Datei geöffnet ist und deshalb nicht verschoben werden kann. Kann man (etwa mit GetLastError) herausfinden, WESHALB der Fehler aufgetreten ist? Also damit ich in das Prog noch reinschreiben kann "Datei xyz konnte nicht verschoben werden, weil die Datei geöffnet ist" oder so? Ich hab mal probiert, mir GetLastError anzeigen zu lassen, es war aber immer 0, auch wenn solch ein Fehler aufgetreten ist! |
AW: File mit SHFileOperation in Papierkorb versch. geht nicht
Ich ziehe mal dieses Thema wieder hoch, da sich meine Frage auf genau dieses Thema auch bezieht.
Bekannt ist ja, dass eine Datei, die auf einem Netzlaufwerk (und somit meistens auch auf einem anderen Rechner) beim Löschen eben NICHT in den Papierkorb wandert, auch wenn man das so angibt. Nun hätte ich das aber gerne. Meine Frage, gibt es dazu eine Möglichkeit das gleich über die Api machen zu lassen, oder muss man halt sie halt selber dort hin kopieren und sie dann halt löschen? |
AW: File mit SHFileOperation in Papierkorb versch. geht nicht
Einmal da schauen http://www.jff2k.de/index-news.php?s...435473&ucat=3&
|
AW: File mit SHFileOperation in Papierkorb versch. geht nicht
Da das Problem ja schon gelöst ist, mache ich hier mal besser dicht.
|
AW: File mit SHFileOperation in Papierkorb versch. geht nicht
Danke dafür.
Ich habe derweil den Avatar entfernt. Ein gekreuzigter Torso gehört hier einfach nicht her. Ganz einfach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz