Hallo.
Ich habe seit neustem Vista und habe zu Beginn bemerkt, dass FOF_ALLOWUNDO bei einer Move/Copy Aktion nicht mehr funktioniert. Da ich diese Einschränkung auf einen Bug schob und den Verlust hinnehmen konnte, habe ich mich nicht mehr darum gekümmert.
Nun möchte ich eine Datei in den Papierkorb schieben und verwende folgende Funktion, die ich 2007
in einer Unit veröffentlicht hatte (und die auch nach meinem Wissen funktionierte):
Delphi-Quellcode:
// Template
// [url]http://www.dsdt.info/tipps/?id=116[/url]
function recycler_add_file_or_folder(file_or_folder:
string; confirmation: boolean): boolean;
overload;
var
Operation: TSHFileOpStruct;
begin
with Operation
do
begin
Wnd := hInstance;
// ?
wFunc := FO_DELETE;
pFrom := PChar(file_or_folder +#0);
pTo :=
nil;
fFlags := FOF_ALLOWUNDO;
if not confirmation
then fFlags := fFlags
or FOF_NOCONFIRMATION;
end;
Result := SHFileOperation(Operation) = 0;
end;
Das Ergebnis: Die Datei wird gelöscht und der Papierkorb enthält das Objekt nicht. FOF_ALLOWUNDO ist ein Weiteres Mal fehlgeschlagen.
Was passiert hier?
Gruß
blackdrake