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ß,
VladPS: 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-Pfadit->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
-
Mit der Funktion kannst Du nicht tricksen.
Du könntest den Explorer selber per ShellExecute und der SELECT Commandline Option starten.
-
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
-
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