| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Получить корневую папку диска по его названию |
| Автор: 0x07L 4.9.2006, 07:27 |
| Никак не могу найти функцию. Помогите, если знаете. SHParseDisplayName не пашет. |
| Автор: Earnest 4.9.2006, 07:37 |
| А просто слэш руками добавить никак? Имя диска-то "C:", а не "Локальный диск(С |
| Автор: 0x07L 4.9.2006, 07:40 |
| А вот именно, "Локальный диск (C:)". Это имя я беру из ListView в диалоге открытия файлов (текст выделенной ячейки). Почему не пользуюсь стандартными средствами, см. форум MFC |
| Автор: GremlinProg 4.9.2006, 09:44 | ||
| 0x07L, случайно "Локальный диск(С Добавлено @ 09:48 если так, то SHParseDisplayName пахать и не должен
оригинальная ссылка: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shbrowseforfolder.asp |
| Автор: 0x07L 4.9.2006, 11:18 |
| Нет, не из SHBrowseForFolder. Последняя как раз возвращает "C:\" А вообще, ты близок к истине: я добыл это из диалога открытия файлов. Приведенная выше SHGetTargetFolderPath мне бы подошла, если б у меня был PIDL, а не строка "Локальный диск (C:)" Но ведь должен быть способ преобразовать "Локальный диск (C:)" в "C:\". Раз Windows смог запаковать "C:\" в "Локальный диск (C:)", значит должен уметь и обратно преобразовывать (теоретически). Кстати, вопрос только что перестал быть важным (нашелся более правильный путь). |
| Автор: 0x07L 6.9.2006, 08:42 | ||
Этот более правильный путь привел-таки меня к относительному PIDL и пути к родительской папке. Делаем так:
Этот код работает и с ярлыками. Для папок типа "Мой компьютер" возвращает пустую строку. Замечу, что даже у "C:\" есть родительская папка, называется "". GremlinProg, спасибо, без этой ссылки с ярлыками я бы долго возился. |