Obtener la lista de archivos seleccionados desde el escritorio de Windows

Estoy intentando obtener una lista de los archivos seleccionados desde el escritorio de Windows y el Explorador de Windows. El requisito es que debería poder recuperar la selección actual desde la ventana del explorador activo o desde el Escritorio.

He logrado reunir el siguiente código, después de revisar los recursos en línea, pero no proporciona una lista de los elementos seleccionados desde el escritorio.

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

Aparte de eso, intenté lo siguiente, pero solo da una lista de todos los elementos seleccionados en todas las ventanas abiertas del explorador mientras ignora el escritorio.

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

Así que siempre acabo con una lista de las ventanas del explorador y no obtengo resultados, incluso cuando no hay ventanas abiertas del explorador. Las técnicas actuales parecen estar ignorando el escritorio por completo.

Realmente agradecería que alguien me ayudara a obtener una lista de los archivos seleccionados de la ventana / escritorio actualmente activa.

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta