Supervisar la selección de archivos en el explorador (como la supervisión del portapapeles) en C #

Estoy tratando de crear una pequeña aplicación auxiliar, un escenario es "buscador de duplicación de archivos". Lo que quiero hacer es esto:

Inicio mi aplicación C # .NET, me da una lista vacía.Inicie el explorador normal de Windows, seleccione un archivo en alguna carpetaLa aplicación C # me dice cosas sobre este archivo (por ejemplo, duplicados)

¿Cómo puedo monitorear el archivo seleccionado actualmente en la instancia "normal" de Windows Explorer? ¿Tengo que iniciar la instancia con .NET para tener un control del proceso? ¿Necesito un identificador o hay algún "gancho global" que pueda monitorear dentro de C #? Es un poco como monitorear el portapapeles, pero no es exactamente lo mismo ...

Se agradece cualquier ayuda (si no tiene código, solo apúnteme a las interops, dlls o páginas de ayuda correctas :-) Gracias, Chris

EDITAR 1 (fuente actual, gracias a 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);
        }
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta