2009-04-07 7 views
0

Ich versuche, eine plattformunabhängige Datei/Verzeichnisbaum-Browser zu implementieren. Im Grunde versuche ich, Windows Explorer-Baumstruktur zu replizieren, um den Computer zu durchsuchen. Ich kann jedoch nicht herausfinden, wie die Ordnerstruktur "Desktop" oder "Mein Computer" zu finden ist (sie ändert sich in jedem PC- und Betriebssystemtyp, Version und Sprache). Wenn ich einen Weg finde, die oberste Ordner-Zeichenkette zu erhalten, kann ich den Baum hoffentlich nach unten durchsuchen und auffüllen. Gibt es irgendwo einen Registrierungsstring?Windows Explorer wie Ordner Baum Browser

Anfangs werde ich nur auf MS Windows-Betriebssysteme (XP, Vista, etc) abzielen, aber später plane ich auch Linux und Macs zu unterstützen. Ich benutze wxWidgets für meine GUI, aber ich bin offen für alle Vorschläge für dieses spezielle Problem. Oh, und ich benutze C++ in VS2008.

+0

Du bist wahrscheinlich hier gehen zu stolpern; "Mein Computer" und "Desktop" sind Windows-spezifisch und nicht tragbar. Außerdem können Sie sie nicht trivial durchlaufen. – MSalters

+0

Wenn Sie nur Windows verwenden, möchten Sie, dass die Zeichenfolge "Desktop" lokalisiert wird? Oder möchten Sie den Pfad zum Desktop-Ordner? – crb

+0

MSalters: Mir wurde klar, worauf Sie nach dem Spielen mit SH-Methoden hingewiesen haben. crb: Ich wollte nur den Pfad zum Desktop. Aber schließlich bin ich mehr geneigt, wxGenericDirCtrl in wxWidgets zu verwenden, die tragbar ist, aber nur gibt mir meine Festplatten als Baum .. Danke. – mentat

Antwort

2

Ignorieren von Portabilität, was Sie brauchen, ist die "PIDL" Struktur. PIDLs sind Verallgemeinerungen von Dateipfaden. Sie können die PIDLs für spezielle Ordner mit SHGetFolderLocation abrufen. Der Desktop ist CSIDL_DESKTOP (nichtCSIDL_DESKTOPDIRECTORY), Arbeitsplatz ist CSIDL_DRIVES.

die PIDLs zu Namen konvertieren, haben einen Blick auf SHGetNameFromIDList