Frage

Gibt es in irgendeiner Sprache eine Möglichkeit, mein Programm einzubinden, wenn ein Benutzer eine Datei umbenennt?

Zum Beispiel:Ein Benutzer benennt eine Datei um und drückt die Eingabetaste (oder klickt weg), um die Umbenennungsaktion zu bestätigen.BEVOR die Datei tatsächlich umbenannt wird, „hört“ mein Programm auf dieses Ereignis und zeigt eine Meldung mit der Meldung „Sind Sie sicher, dass Sie C: est\file.txt in C: est est.txt umbenennen möchten?“ an.

Ich denke/hoffe, dass dies mit C++, C# oder .NET möglich ist.Aber ich habe keine Ahnung, wo ich suchen soll.

War es hilfreich?

Lösung

Sie können dieses Problem wahrscheinlich lösen, indem Sie das verwenden FileSystemWatcher-Klasse im .NET Framework.

Aus den Bemerkungen der Klasse:

Sie können nach Umbenennen, Löschen oder Erstellen von Dateien oder Verzeichnissen achten.Um beispielsweise nach Umbenennung von Textdateien zu achten, legen Sie die Filtereigenschaft auf "*.txt" fest und rufen Sie die Waitforchanged -Methode mit einem umbenannten Umbenennen für seinen Parameter auf.

Andere Tipps

Ich vermute, dass dies der Fall ist nicht möglich, fand ich Das Dies dient der Überwachung von Vorgängen (einschließlich Umbenennungen) für einen Ordner, es scheint jedoch keine ähnliche Methode für Dateien zu geben.

@Richard, FileSystemWatcher ist gut, wenn Sie nur Änderungen überwachen müssen, er sie aber unterbrechen muss, was nicht möglich ist.

IFileOperationProgressSink.PreRenameItem ist das am besten unterstützte Ding, das ich kenne.Leider ist es kein Hook für den Explorer – Sie können es also nur für sich selbst verwenden IFileOperation Aktionen.Abhängig von Ihren Anforderungen können Sie eine Shell-Erweiterung schreiben, um Ihre eigenen zu erstellen ConfirmRename (oder so) und von dort aus verzweigen.

Andernfalls handelt es sich um Hooking SHFileOperation, Ich finde.Dies müsste in nicht verwaltetem Code erfolgen, da Sie in Explorer.exe geladen werden.Für Vista wurde dies geändert IFileOperation - was wahrscheinlich bedeutet, dass Sie die Erstellung einhaken und Ihren Schein verteilen müssen.

Ich persönlich denke, da Sie von einer Umbenennung sprechen, Wilhelmtells Idee zu bestätigen nach Die beste Idee ist es, die Änderung vorzunehmen und sie bei Bedarf rückgängig zu machen.

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