Search code examples
windowsexplorerwindows-shell

Programmatically select multiple files in windows explorer


I can display and select a single file in windows explorer like this:

explorer.exe /select, "c:\path\to\file.txt"

However, I can't work out how to select more than one file. None of the permutations of select I've tried work.

Note: I looked at these pages for docs, neither helped.

https://support.microsoft.com/kb/314853
http://web.archive.org/web/20100716112458/http://www.infocellar.com:80/Win98/explorer-switches.htm


Solution

  • This should be possible with the shell function SHOpenFolderAndSelectItems

    EDIT

    Here is some sample code showing how to use the function in C/C++, without error checking:

    //Directory to open
    ITEMIDLIST *dir = ILCreateFromPath(_T("C:\\"));
    
    //Items in directory to select
    ITEMIDLIST *item1 = ILCreateFromPath(_T("C:\\Program Files\\"));
    ITEMIDLIST *item2 = ILCreateFromPath(_T("C:\\Windows\\"));
    const ITEMIDLIST* selection[] = {item1,item2};
    UINT count = sizeof(selection) / sizeof(ITEMIDLIST);
    
    //Perform selection
    SHOpenFolderAndSelectItems(dir, count, selection, 0);
    
    //Free resources
    ILFree(dir);
    ILFree(item1);
    ILFree(item2);