Ruft eine Liste der ausgewählten Dateien vom Windows-Desktop ab

Ich versuche, eine Liste der ausgewählten Dateien vom Windows-Desktop und vom Explorer-Windows abzurufen. Voraussetzung ist, dass ich die aktuelle Auswahl aus dem aktiven Explorer-Fenster oder vom Desktop abrufen kann.

Ich habe es geschafft, den folgenden Code zusammenzustellen, nachdem ich die Onlineressourcen durchgesehen habe, aber er enthält keine Liste ausgewählter Elemente auf dem Desktop.

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

Ansonsten habe ich Folgendes versucht, aber es wird nur eine Liste aller ausgewählten Elemente in allen geöffneten Explorer-Fenstern angezeigt, während der Desktop ignoriert wird.

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

So lande ich immer mit einer Liste aus den Explorer-Fenstern und erhalte keine Ergebnisse, auch wenn keine Explorer-Fenster geöffnet sind. Die aktuellen Techniken scheinen den Desktop insgesamt zu ignorieren.

Ich wäre sehr dankbar, wenn mir jemand helfen könnte, eine Liste der ausgewählten Dateien aus dem derzeit aktiven Fenster / Desktop zu erhalten.

Danke dir.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage