Überwachen Sie die Dateiauswahl im Explorer (wie die Überwachung der Zwischenablage) in C #.

Ich versuche eine kleine Hilfsanwendung zu erstellen, ein Szenario ist "Dateiduplizierungsfinder". Was ich machen möchte ist folgendes:

Ich starte meine C # .NET-App, es gibt mir eine leere Liste.Starten Sie den normalen Windows Explorer und wählen Sie eine Datei in einem Ordner ausDie C # -App informiert mich über diese Datei (z. B. Duplikate).

Wie kann ich die aktuell ausgewählte Datei in der "normalen" Windows Explorer-Instanz überwachen? Muss ich die Instanz mit .NET starten, um den Prozess zu handhaben? Benötige ich ein Handle oder gibt es einen "globalen Hook", den ich in C # überwachen kann? Es ist ein bisschen wie das Überwachen der Zwischenablage, aber nicht genau dasselbe ...

Jede Hilfe ist willkommen (wenn Sie keinen Code haben, zeigen Sie mir einfach die richtigen Interops, DLLs oder Hilfeseiten :-) Danke, Chris

EDIT 1 (aktuelle Quelle, danke an 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);
        }
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage