Surveiller la sélection de fichier dans l’explorateur (comme la surveillance du presse-papiers) en C #

J’essaie de créer une petite application d’aide, un scénario est “chercheur de duplication de fichiers”. Ce que je veux faire, c’est ceci:

  • Je lance mon application C # .NET, elle me donne une liste vide.
  • Démarrez l’explorateur Windows normal, sélectionnez un fichier dans un dossier.
  • L’application C # me dit des choses sur ce fichier (par exemple, les doublons)

Comment puis-je surveiller le fichier actuellement sélectionné dans l’instance “normale” de l’explorateur Windows? Dois-je démarrer l’instance à l’aide de .NET pour pouvoir gérer le processus? Ai-je besoin d’une poignée ou existe-t-il un “raccord global” que je puisse surveiller en C #. C’est un peu comme surveiller le presse-papier, mais pas exactement la même chose …

Toute aide est appréciée (si vous n’avez pas de code, pointez-moi juste vers les pages interops, dll ou aide adéquates 🙂 Merci Chris

EDIT 1 (source actuelle, merci à Mattias)

using SHDocVw; using Shell32; public static void ListExplorerWindows() { foreach (InternetExplorer ie in new ShellWindowsClass()) DebugExplorerInstance(ie); } public static void DebugExplorerInstance(InternetExplorer instance) { Debug.WriteLine("DebugExplorerInstance ".PadRight(30, '=')); Debug.WriteLine("FullName " + instance.FullName); Debug.WriteLine("AdressBar " + instance.AddressBar); var doc = instance.Document as IShellFolderViewDual ; if (doc != null) { Debug.WriteLine(doc.Folder.Title); foreach (FolderItem item in doc.SelectedItems()) { Debug.WriteLine(item.Path); } } } 

Vous pouvez le faire avec les interfaces d’automatisation du shell. Le processus de base consiste à

  1. Exécutez Tlbimp sur Shdocwv.dll et Shell32.dll (ou ajoutez directement une référence à partir de VS).
  2. Créez une instance de la collection ShellWindows et effectuez une itération. Cela contiendra les fenêtres Windows Explorer et Internet Explorer.
  3. Pour les fenêtres de l’Explorateur Windows, la propriété IWebBrowser2.Document renverra une référence IShellFolderViewDual .
  4. IShellFolderViewDual a une méthode SelectedItems que vous pouvez interroger et un événement pour les modifications que vous pouvez gérer.