Получить список выбранных файлов с рабочего стола Windows
Я пытаюсь получить список выбранных файлов с рабочего стола Windows и из проводника Windows. Требование заключается в том, что я должен быть в состоянии получить текущий выбор из окна активного проводника или рабочего стола.
Мне удалось собрать следующий код, пройдя через онлайн-ресурсы, но он не предоставляет список выбранных элементов с рабочего стола.
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);
}
}
}
Кроме этого, я попробовал следующее, но он просто дает список всех выбранных элементов во всех открытых окнах проводника, игнорируя рабочий стол.
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);
}
}
Поэтому я всегда получаю список из окон проводника и не получаю результатов, даже когда окна проводника не открыты. Текущие методы, кажется, игнорируют рабочий стол в целом.
Я был бы очень признателен, если бы кто-нибудь помог мне получить список выбранных файлов из текущего активного окна / рабочего стола.
Благодарю вас.