// get full path of a shell folder bool ShellDirectory::get_path(PTSTR path, size_t path_count) const { CONTEXT("ShellDirectory::get_path()"); if (!path || path_count==0) return false; path[0] = TEXT('\0'); if (_folder.empty()) return false; SFGAOF attribs = SFGAO_FILESYSTEM; // Split pidl into current and parent folder PIDLs ShellPath pidlParent, pidlFolder; _pidl.split(pidlParent, pidlFolder); if (FAILED(const_cast<ShellFolder&>(_folder)->GetAttributesOf(1, (LPCITEMIDLIST*)&pidlFolder, &attribs))) return false; if (!(attribs & SFGAO_FILESYSTEM)) return false; if (FAILED(path_from_pidl(get_parent_folder(), &*_pidl, path, path_count))) return false; return true; }
// get full path of a shell folder bool ShellDirectory::get_path(PTSTR path) const { CONTEXT("ShellDirectory::get_path()"); path[0] = TEXT('\0'); SFGAOF attribs = 0; if (!_folder.empty()) if (FAILED(const_cast<ShellFolder&>(_folder)->GetAttributesOf(1, (LPCITEMIDLIST*)&_pidl, &attribs))) return false; if (!(attribs & SFGAO_FILESYSTEM)) return false; if (FAILED(path_from_pidl(get_parent_folder(), &*_pidl, path, MAX_PATH))) return false; return true; }
HRESULT ShellEntry::GetUIObjectOf(HWND hWnd, REFIID riid, LPVOID* ppvOut) { LPCITEMIDLIST pidl = _pidl; return get_parent_folder()->GetUIObjectOf(hWnd, 1, &pidl, riid, NULL, ppvOut); }
ShellFolder ShellEntry::get_shell_folder() const { return get_parent_folder(); }