Benutzer mit den meisten Antworten
SHBrowseForFolder

Frage
-
Hallo
Wie erreiche ich beim Einsatz von SHBrowseForFolder das ich nicht nur den Namen des gewählten Verzeichnisses erhalte, sondern den kompletten Pfad bis dorthin ?
Beipspiel: Ich wähle das Verzeichnis v2 aus diesem Pfad. d:\v1\v2
Die Funktion gibt mir aber nur v2 zurück. ich möchte den kompletten Pfad zurück.
Also wie es oben schon steht: d:\v1\v2
Oder gibt es dafür eine spezielle Funktion ?
Gruss
- Bearbeitet Henry_2 Freitag, 6. Januar 2012 04:40
Antworten
-
SHBrowseForFolder liefert nur eine PIDLIST und keinen Pfad. Es kommt also darauf an wie Du die PIDLIST umgewandelt hast inden gewünschten Pfad.
Verutlich benutzt Du eine falsche Methode.Zeiege uns Deinen Code ansonsten schau Dir mal an wie es hier gemacht wird:
http://www.codeproject.com/KB/shell/cxsbrowsefolder.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin Richter Freitag, 6. Januar 2012 06:37
- Als Antwort markiert Robert Breitenhofer Montag, 30. Januar 2012 20:12
-
SHBrowseForFolder(&biSP); MessageBox(NULL,biSP.pszDisplayName,"dir",MB_OK); if(SHGetPathFromIDList(biSP.pidlRoot,pfadname) == true) MessageBox(NULL,pfadname,"rootdirname",MB_OK); }
Du musst den Rückgabewert von SHBrowseForFolder verwenden.
Lies bitte die Doku und schau Dir dort die Samples an:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115(v=vs.85).aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin Richter Freitag, 6. Januar 2012 08:41
- Bearbeitet Martin Richter Freitag, 6. Januar 2012 08:42
- Als Antwort markiert Robert Breitenhofer Montag, 30. Januar 2012 20:12
Alle Antworten
-
SHBrowseForFolder liefert nur eine PIDLIST und keinen Pfad. Es kommt also darauf an wie Du die PIDLIST umgewandelt hast inden gewünschten Pfad.
Verutlich benutzt Du eine falsche Methode.Zeiege uns Deinen Code ansonsten schau Dir mal an wie es hier gemacht wird:
http://www.codeproject.com/KB/shell/cxsbrowsefolder.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin Richter Freitag, 6. Januar 2012 06:37
- Als Antwort markiert Robert Breitenhofer Montag, 30. Januar 2012 20:12
-
Hallo Martin
Hier die Funktion. Ich übergebe ihr das Handle auf das Progr.fenster. Sie meldet lediglich das gewählte Verzeichnis. SHGetPathFromIDList gibt false zurück.
#include <Shlobj.h> void open_DirNameV2(HWND hwnd) { BROWSEINFO biSP; char pfadname[1000]; char dirname[1000]; biSP.hwndOwner = hwnd; biSP.pidlRoot = NULL; biSP.pszDisplayName = dirname; biSP.lpszTitle = "Titel"; biSP.ulFlags = 0; //BIF_RETURNONLYFSDIRS | BIF_BROWSEINCLUDEURLS; biSP.lpfn = NULL; SHBrowseForFolder(&biSP); MessageBox(NULL,biSP.pszDisplayName,"dir",MB_OK); if(SHGetPathFromIDList(biSP.pidlRoot,pfadname) == true) MessageBox(NULL,pfadname,"rootdirname",MB_OK); }
Gruss -
SHBrowseForFolder(&biSP); MessageBox(NULL,biSP.pszDisplayName,"dir",MB_OK); if(SHGetPathFromIDList(biSP.pidlRoot,pfadname) == true) MessageBox(NULL,pfadname,"rootdirname",MB_OK); }
Du musst den Rückgabewert von SHBrowseForFolder verwenden.
Lies bitte die Doku und schau Dir dort die Samples an:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115(v=vs.85).aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin Richter Freitag, 6. Januar 2012 08:41
- Bearbeitet Martin Richter Freitag, 6. Januar 2012 08:42
- Als Antwort markiert Robert Breitenhofer Montag, 30. Januar 2012 20:12