Мониторинг выбора файлов в проводнике (например, мониторинг буфера обмена) в C #

Я пытаюсь создать небольшое вспомогательное приложение, один сценарий - «поиск дубликатов файлов». Что я хочу сделать, это:

Я запускаю свое приложение на C # .NET, оно дает мне пустой список.Запустите обычный проводник Windows, выберите файл в какой-либо папкеПриложение C # рассказывает мне об этом файле (например, дубликаты)

Как я могу контролировать текущий выбранный файл в "нормальном" экземпляре Windows Explorer. Нужно ли запускать экземпляр с помощью .NET, чтобы иметь дескриптор процесса. Нужен ли мне дескриптор, или есть какой-то «глобальный хук», который я могу отслеживать внутри C #. Это немного похоже на мониторинг буфера обмена, но не совсем то же самое ...

Любая помощь приветствуется (если у вас нет кода, просто укажите мне правильные операции, dll или страницы помощи :-) Спасибо, Крис

РЕДАКТИРОВАТЬ 1 (текущий источник, спасибо Маттиасу)

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);
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос