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.