Uzyskaj listę wybranych plików z pulpitu Windows

Próbuję uzyskać listę wybranych plików z pulpitu Windows i Windows Explorer. Warunkiem jest, że powinienem być w stanie pobrać aktualny wybór z aktywnego okna eksploratora lub pulpitu.

Po przejściu przez zasoby online udało mi się zebrać następujący kod, ale nie zawiera on listy wybranych elementów z pulpitu.

ArrayList selected = new ArrayList();
var shell = new Shell32.Shell();
IntPtr handle = IntPtr.Zero;
handle = GetForegroundWindow();
int intHandle = handle.ToInt32();

//For each explorer
foreach (InternetExplorer window in new ShellWindowsClass())
{

    if (window.HWND == (int)handle)
    {
        Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
        foreach (Shell32.FolderItem item in items)
        {
            selected.Add(item.Path);
        }
    }
}

Poza tym wypróbowałem poniższe, ale po prostu wyświetla listę wszystkich wybranych elementów we wszystkich otwartych oknach eksploratora, ignorując jednocześnie Pulpit.

string filename; = Path.GetFileNameWithoutExtension(window.FullName).ToLower();
if (filename.ToLowerInvariant() == "explorer")
{
    Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
    foreach (Shell32.FolderItem item in items)
    {
        //MessageBox.Show(item.Path.ToString());
        selected.Add(item.Path);
    }
}

Dlatego zawsze otrzymuję listę z okien eksploratora i nie uzyskuję żadnych wyników, nawet jeśli nie ma otwartych okien eksploratora. Obecne techniki wydają się całkowicie ignorować Pulpit.

Naprawdę bym to docenił, gdyby ktoś mógł mi pomóc uzyskać listę wybranych plików z aktualnie aktywnego okna / pulpitu.

Dziękuję Ci.

questionAnswers(3)

yourAnswerToTheQuestion