Frage

Derzeit verwende ich die folgende Funktion

file.Delete();

Aber wie kann ich mit dieser Funktion eine Datei in den Papierkorb schicken, anstatt sie einfach gleich zu löschen?

War es hilfreich?

Lösung

Hinweis: Dies funktioniert auch nicht mit nicht-u-interaktiven Apps wie Windows-Dienste

Dieser Wrapper kann Ihnen zur Verfügung stellen. Funktionalität:

generasacodicetagpre.

Andere Tipps

Verwenden Sie Dateisystem.DeleteFile und geben Sie das Richtige an, RecycleCopion .

.

Während dies mit ui interaktiven Apps funktioniert, funktioniert er nicht mit nicht-u-interaktiven Apps wie einer Windows-Service-App.

Die folgende Lösung ist einfacher als die anderen:

generasacodicetagpre.

Sie können mit dieser Bibliothek andere Funktionalitäten des Papierkorbs verwenden.

Vergessen Sie zunächst nicht, die Bibliothek "Microsoft Shell Controls and Automation" (aus dem Menü COM) hinzuzufügen, um den generationspflichtigen Namespace verwenden zu können.Es wird dynamisch mit Ihrem Projekt verknüpft, anstatt zusammen mit Ihrem Programm zusammengestellt zu werden.

 [1]: https://i.stack.imgur.com/vs

Leider müssen Sie auf die Win32-API zurückgreifen, um eine Datei in den Papierkorb zu entfernen.Probieren Sie den folgenden Code aus, basierend auf dieser Beitrag.Es nutzt das Generikum SHFileOperation Funktion für Dateisystemoperationen über die Windows-Shell.

Definieren Sie Folgendes (in einer Dienstprogrammklasse ist es wahrscheinlich am besten).

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=1)]
public struct SHFILEOPSTRUCT
{
        public IntPtr hwnd;
        [MarshalAs(UnmanagedType.U4)] public int wFunc;
        public string pFrom;
        public string pTo;
        public short fFlags;
        [MarshalAs(UnmanagedType.Bool)] public bool fAnyOperationsAborted;
        public IntPtr hNameMappings;
        public string lpszProgressTitle;
}

[DllImport("shell32.dll", CharSet=CharSet.Auto)]
public static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);

public const int FO_DELETE = 3;
public const int FOF_ALLOWUNDO = 0x40;
public const int FOF_NOCONFIRMATION = 0x10; // Don't prompt the user

Und um damit eine Datei zu löschen und sie in den Papierkorb zu verschieben, benötigen Sie etwas wie:

var shf = new SHFILEOPSTRUCT();
shf.wFunc = FO_DELETE;
shf.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;
shf.pFrom = @"C:\test.txt";
SHFileOperation(ref shf);

Sie können dllimport SHFileOperation zu tundas.

Dazu gibt es für diese eingebaute Bibliothek.

Zuerst Referenz hinzufügen Microsoft.VisualBasic Fügen Sie dann diesen Code hinzu:

generasacodicetagpre.

Ich habe das gefunden hier .

Ich verwende diese Erweiterungsmethode, dann kann ich einfach ein VerzeichnisInfo oder fileInfo verwenden und das löschen.

generasacodicetagpre.

Eine Probe, wie man anrufen kann, könnte dies sein:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top