AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi FOF_ALLOWUNDO + Vista geht nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

FOF_ALLOWUNDO + Vista geht nicht?

Offene Frage von "blackdrake"
Ein Thema von blackdrake · begonnen am 23. Dez 2008 · letzter Beitrag vom 26. Dez 2008
Antwort Antwort
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#1

FOF_ALLOWUNDO + Vista geht nicht?

  Alt 23. Dez 2008, 03:29
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
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 23. Dez 2008, 14:12
FOF_ALLOWUNDO
Zitat:
Preserve undo information, if possible.

Prior to Windows Vista, operations could be undone only from the same process that performed the original operation.

In Windows Vista and later systems, the scope of the undo is a user session. Any process running in the user session can undo another operation. The undo state is held in the Explorer.exe process, and as long as that process is running, it can coordinate the undo functions.

If the source file parameter does not contain fully qualified path and file names, this flag is ignored.
http://msdn.microsoft.com/en-us/library/bb759795(VS.85).aspx
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 23. Dez 2008, 19:58
Und was will uns der Herr damit sagen?

Ich habe mir den Text intensiv durchgelesen, aber ich weiß jetzt leider trotzdem nicht wirklich, was die damit meinen. Der Prozess ist vom Benutzer X und die zu löschende Datei gehört dem Benutzer X. Trotzdem geht die Rückgängig-Funktion nicht. Wieso? Ich brauche diese Papierkorb-Funktion unbedingt.
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#4

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 23. Dez 2008, 20:13
Naja, der letzte Satz des Zitats ist auch noch recht interessant. Vielleicht liegt der Hase da im Pfeffer?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 23. Dez 2008, 23:08
Hast du auch den vollen Pfad angegeben?
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 23. Dez 2008, 23:27
Hallo.

Irgendwie läuft hier etwas sehr seltsam.

Ich habe folgenden Test durchgeführt:
- Eine OpenDialogbox, eine Showmessage und meine Funktion RecycleFile

Ergebnis der ShowMessage: C:\Users\xxx\Pictures\xxx.jpg *
Ergebnis des Löschung: Datei IST im Papierkorb!

Nun habe ich bei meinem Projekt bei der Recycle-Funktion eine Showmessage zum Testen eingeführt

Ergebnis der ShowMessage: C:\Users\xxx\Pictures\xxx.jpg *
Ergebnis des Löschung: Datei IST NICHT im Papierkorb!

Es sei anzumerken:
- Ich habe bei beiden Tests die gleichen Datei(kopie) im selben Verzeichnis verwendet.
- Vista hat auch nichts mit dem Roaming "Pictures" vs. "Bilder" verwurstet (was ich auch so erwartet hätte)
- Das Projekt und der oben genannte Test verwenden OpenDialoge, die Dateiangabe kommt also nicht als Parameter rein und kann somit auch nicht unvollständig sein - der Parameter für meine Funktion ist aber trotzdem der gleiche, weswegen es keinen Unterschied machen sollte.

Was passiert hier?

* xxx steht für einen Namen mit Leerzeichen. Das sollte aber bei Windows keine Probleme machen.
Daniel Marschall
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 26. Dez 2008, 21:57
Keine eine Ahnung?
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: FOF_ALLOWUNDO + Vista geht nicht?

  Alt 26. Dez 2008, 23:30
kannst du mal ein Beispielprogramm basteln? Ich hab grad kein Delphi zur Hand
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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