SHOpenFolderAndSelectItems - Verzeichnisbaum.



  • Hi,
    Ich benutze SHOpenFolderAndSelectItems um den Explorer zu öffnen und darin Elemente zu selektieren.

    Allerdings stören mich 2 Dinge:
    1. wenn es ein Explorerfenster gibt, dass das Verzeichnis bereits geöffent hat, dann wird dieses recyclet - Das möchte ich eigentlich nicht
    2. Wenn noch kein Explorerfenster im entsprechenden Verzeichnis geöffnet ist, dann wird ein Explorerfenster ohne Dateibaum geöffnet - diesen sollte aber sichtbar sein.

    (das beschreibene Verhalten tritt unter WinXP auf)

    Gibts hier noch irgendwelche Tricks?

    Gruß,
    Vlad

    PS: hier falls interessant der Code:
    it ist ein Iterator über eine map<string,list<string>>
    it->second ist entsprechend die Liste, die alle zu selektierenden Dateinamen enthält
    Path - der zu öffnende Verzeichnis-Pfad

    it->second.sort();
              vector<ITEMIDLIST *> items;
              const ITEMIDLIST* itemlist[500];
              ITEMIDLIST* dir = ILCreateFromPath( path.c_str() );
              for(list<string>::iterator lit = it->second.begin();
                lit != it->second.end(); 
                lit++)
              {
                string fullpath = path + string("\\") + (*lit);
                ITEMIDLIST* item = ILCreateFromPath(fullpath.c_str());
                itemlist[items.size()] = item;
                items.push_back(item);
              }
              SHOpenFolderAndSelectItems(dir, items.size(), itemlist, 0);
              ILFree(dir);
              for( vector<ITEMIDLIST *>::iterator iit = items.begin();
                iit != items.end(); 
                iit++)
              {
                ILFree(*iit);
              }
    

    Edit: beschreibung korrigiert


  • Mod

    Mit der Funktion kannst Du nicht tricksen.

    Du könntest den Explorer selber per ShellExecute und der SELECT Commandline Option starten.

    http://support.microsoft.com/kb/130510



  • Martin Richter schrieb:

    Du könntest den Explorer selber per ShellExecute und der SELECT Commandline Option starten.

    genau das war mein Ausgangspunkt.
    leider kann man per select-Parameter nur eine Datei selektieren


  • Mod

    Vielleicht gibt es noch andere versteckte Parameter... Müsste man sich mal mit dem Process Explorer ansehen, oder einem anderen Tool.



  • Martin Richter schrieb:

    Vielleicht gibt es noch andere versteckte Parameter... Müsste man sich mal mit dem Process Explorer ansehen, oder einem anderen Tool.

    wie kriegt man mit dem Process-Explorer raus, was für kommandozeilenparameter akzeptiert werden?

    Ich habe aber gerade eine andere Idee:
    Erst Ordner mit shellExecute öffnen und dann mit SHOpenFolderAndSelectItems items selektieren. die Funktion sollte dann ja den Ordner benutzen


Anmelden zum Antworten