Connecter mon programme à l'événement de renommage de l'Explorateur Windows

StackOverflow https://stackoverflow.com/questions/24644

  •  09-06-2019
  •  | 
  •  

Question

Existe-t-il un moyen, dans n'importe quel langage, d'accrocher mon programme lorsqu'un utilisateur renomme un fichier ?

Par exemple:Un utilisateur renomme un fichier et appuie sur Entrée (ou clique) pour confirmer l'action de renommage.AVANT que le fichier ne soit réellement renommé, mon programme "écoute" cet événement et affiche un message disant "Êtes-vous sûr de vouloir renommer C: est\file.txt en C: est est.txt ?".

Je pense/espère que cela est possible avec C++, C# ou .NET.Mais je ne sais pas où chercher.

Était-ce utile?

La solution

Vous pouvez probablement résoudre ce problème en utilisant le Classe FileSystemWatcher dans le cadre .NET.

D'après les remarques de la classe :

Vous pouvez surveiller le changement de nom, la suppression ou la création de fichiers ou d'annuaires.Par exemple, pour surveiller le renommage de fichiers texte, définissez la propriété Filter sur « *.txt » et appelez le WaitForChanged avec une méthode Renamed spécifiée pour son paramètre.

Autres conseils

Je suppose que c'est pas possible, j'ai trouvé ce qui sert à surveiller les opérations (y compris le renommage) sur un dossier, mais il ne semble pas y avoir de méthode similaire pour les fichiers.

@Richard, FileSystemWatcher est utile si vous avez uniquement besoin de surveiller les modifications, mais il doit les interrompre, ce qu'il ne peut pas faire.

IFileOperationProgressSink.PreRenameItem est la chose la plus proche que je connaisse.Malheureusement, il ne s'agit pas d'un lien vers Explorer ; vous ne pouvez donc l'utiliser que pour votre propre compte. IFileOperation Actions.En fonction de vos besoins, vous pouvez écrire une extension shell pour créer la vôtre ConfirmRename (ou quelque chose comme ça), et branchez-vous à partir de là.

Sinon, vous envisagez d'accrocher SHFileOperation, Je pense.Cela devra être fait dans du code non géré, car vous serez chargé dans Explorer.exe.Pour Vista, cela a été remplacé par IFileOperation - ce qui signifie probablement que vous devrez en crocheter la création et distribuer votre maquette.

Personnellement, je pense que puisque tu parles d'un changement de nom, l'idée de Wilhelmtell de confirmer après le changement, et l’annuler si nécessaire est la meilleure idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top