How to get Windows Explorer's selected files from within C#?
you don't need to get the Handle (of explorer).
In the project's references add these references found in the COM
section. One needs to a reference to SHDocVw, which is the Microsoft Internet Controls
COM object and Shell32
, which is the Microsoft Shell Controls and Automation COM object.
Then add your:
using System.Collections;
using Shell32;
using System.IO;
Then this will work:
string filename;
ArrayList selected = new ArrayList();
foreach (SHDocVw.InternetExplorer window in new SHDocVw.ShellWindows())
{
filename = Path.GetFileNameWithoutExtension(window.FullName).ToLower();
if (filename.ToLowerInvariant() == "explorer")
{
Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
foreach (Shell32.FolderItem item in items)
{
selected.Add(item.Path);
}
}
}