Obter lista de arquivos selecionados do Windows Desktop

Estou tentando obter uma lista de arquivos selecionados na área de trabalho do Windows e no Windows Explorer. O requisito é que eu consiga recuperar a seleção atual da janela do explorador ativo ou da área de trabalho.

Eu consegui montar o seguinte código, depois de passar por recursos online, mas ele não fornece uma lista de itens selecionados da área de trabalho.

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

Além disso, eu tentei o seguinte, mas ele só dá uma lista de todos os elementos selecionados em todas as janelas do explorador aberto, ignorando o Desktop.

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

Então, eu sempre acabo com uma lista das janelas do explorador e não obtenho resultados, mesmo quando nenhuma janela do explorer está aberta. As técnicas atuais parecem ignorar completamente o Desktop.

Eu realmente apreciaria se alguém pudesse me ajudar a obter uma lista de arquivos selecionados da janela / área de trabalho ativa no momento.

Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion