Standarddialog - Ordner suchen: "Durchsuchen"-Ordner vorgeben



  • Hallo Forum!

    Um ein Verzeichnis zu suchen und in ein Textfeld zu übertragen benutze ich folgenden Code:

    LPMALLOC pMalloc;
    	/* Gets the Shell's default allocator */
    	if (::SHGetMalloc(&pMalloc) == NOERROR)
    	{
    		BROWSEINFO bi;
    		char pszBuffer[MAX_PATH];
    		LPITEMIDLIST pidl;
    		// Get help on BROWSEINFO struct - it's got all the bit settings.
    
    		bi.hwndOwner = GetSafeHwnd();
    		bi.pidlRoot = NULL;
    		bi.pszDisplayName = NULL;
    		bi.lpszTitle = _T("Bitte wählen den Ordner aus, der die gewünschten Messdaten enthält:");
    		bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
    		bi.lpfn = NULL;
    		bi.lParam = 0;
    		// This next call issues the dialog box.
    		if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)
    		{
    			if (::SHGetPathFromIDList(pidl, pszBuffer))
    			{ 
    			// At this point pszBuffer contains the selected path */.
    				m_strOrdner=pszBuffer;
    				if (m_strOrdner.Right(1)!='\\')
    					m_strOrdner+="\\";
    			}
    			// Free the PIDL allocated by SHBrowseForFolder.
    			pMalloc->Free(pidl);
    		}
    		// Release the shell's allocator.
    		pMalloc->Release();
    	}
    

    Dabei startet die Ordnersuche immer im Arbeitsplatz, während ich aber gerne einen Start in einem Ordner auf der Festplatte (z.B. C:\WINDOWS) hätte. Wie kann ich das bewerkstelligen?

    Viele Grüße,
    Holger



  • hätte da nen Zitat aus der MSDN:

    pidlRoot
    Pointer to an item identifier list (PIDL) specifying the location of the root folder from which to start browsing. Only the specified folder and any subfolders that are beneath it in the namespace hierarchy will appear in the dialog box. This member can be NULL; in that case, the namespace root (the desktop folder) is used.



  • @Red Skall:
    Ja, dieses Zitat kenne ich auch... Wäre da nicht der kleine aber feine Nebensatz, dass nur der spezifizierte Ordner mit deren Unterordnern erreicht werden kann. Ich möchte es aber offen lassen, welchen Ordner ich auf dem Rechner auswähle. Lediglich der Start-Ordner soll vorgegeben werden...

    Gruß,
    Holger



  • hmm, hätte ich mir eigentlich denken können das du das problem hattest, sorry 😉

    dann kann ich aber auch nicht helfen, aber ist ne interessante frage


Anmelden zum Antworten