2008-08-23 16 views
7

Existe-t-il un moyen, dans une langue quelconque, de raccorder mon programme lorsqu'un utilisateur renomme un fichier?Accrocher mon programme avec l'événement de renommage de Windows Explorer

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

Je pense/espère que c'est possible avec C++, C# ou .NET .. Mais je n'ai aucune idée de l'endroit où chercher.

Répondre

5

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

D'après les remarques de la classe:

Vous pouvez regarder renommage, suppression, ou création de fichiers ou de répertoires. Par exemple, pour surveiller le renommage des fichiers texte , définissez la propriété Filter sur "* .txt" et appelez la méthode WaitForChanged avec un Renommé spécifié pour son paramètre.

0

Je pense que cela est pas possible, j'ai trouvé this qui est suivi des opérations (y compris renommage) sur un dossier, mais il ne semble pas être une méthode similaire pour les fichiers.

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

0

IFileOperationProgressSink.PreRenameItem est la chose la plus proche que je connaisse. Malheureusement, ce n'est pas un point d'ancrage dans Explorer - vous ne pouvez donc l'utiliser que pour vos propres actions IFileOperation. Selon vos besoins, vous pouvez écrire une extension shell pour faire votre propre ConfirmRename (ou quelque chose), et branchez à partir de là.

Sinon, vous cherchez à accrocher SHFileOperation, je pense. Cela devrait être fait en code non managé, car vous serez chargé dans Explorer.exe. Pour Vista, cela a été changé en IFileOperation - ce qui signifie probablement que vous devrez en accrocher la création et passer votre maquette.

Personnellement, je pense que puisque vous parlez un renommage, wilhelmtell's idea de confirmer après le changement, et le défaire si nécessaire est la meilleure idée.

Questions connexes