Root von SHBrowseForFolder setzen
-
void GUIShellBrowserDialog::SetCSIDL(int csidl) { m_csidl = csidl; } std::string GUIShellBrowserDialog::Browse() const { LPITEMIDLIST pidlroot = NULL; LPITEMIDLIST pidlselect = NULL; LPMALLOC pmalloc = NULL; BROWSEINFO bi; char retval[MAX_PATH + 1] = {0}; char displayname[MAX_PATH + 1] = {0}; strncpy(displayname, m_displayname.c_str(), sizeof(displayname)-1); if(SHGetMalloc(&pmalloc) == NOERROR) { if(m_csidl) SHGetSpecialFolderLocation(m_parent, m_csidl, &pidlroot); memset(&bi, 0, sizeof(BROWSEINFO)); bi.ulFlags = FlagsToValue(); bi.hwndOwner = m_parent; bi.pidlRoot = pidlroot; bi.pszDisplayName = displayname; bi.lpszTitle = m_title.c_str(); if((pidlselect = SHBrowseForFolder(&bi)) != NULL) { MessageBox(0, displayname, displayname, 0); strncpy(retval, displayname, sizeof(retval)-1); SHGetPathFromIDList(pidlselect, retval); if(*retval == 0) strncpy(retval, displayname, sizeof(retval)-1); pmalloc->Free(pidlselect); } if(pidlroot) pmalloc->Free(pidlroot); pmalloc->Release(); } return std::string(retval); }ich kann jetzt mit hilfe von
SetCSIDL(CSIDL_NETWORK);dirkt auf "My Network Places" springen; bzw. "My Network Places" ist der Root des angezeigten Baumes.
das ganze sieht jetzt so aus
- My Network Places | - Entire Network | + Microsoft Windows Network | + Directory + c$ on someserver + temaballer.debesteht die möglichkeit, dass "Entire Network" oder gar "Microsoft Windows Network" die Root ist?
-
google mal nach CSIDL. In der MSDN solltest du alle verfügbaren CSIDLs finden. Ich war selber erstaunt, wie viele es davon giebt :).
-
danke;
die kenn ich aber schon;
muss ich wohl selbst was stricken
-
hi.
ich benutze jetzt WNetOpenEnum und WNetEnumResource um die domains und deren pcs selber zu browsen;
hab aber ein kleines nice-to-have problem.wenn die Domain mit SHBrowseForFolder z.b. so angezeigt wird
Dia2k
dann sieht sie beim enumerieren so aus
DIA2K
das sieht aber nicht so schön aus; servernamen werden auch in Großbuchstaben zurück gegeben; hab ich ne chance, die "schönen" Namen zu erhalten?