Когда пользователь перешел в проводнике Windows, например, к папку на SD-карте своего Android-телефона, Проводник показывает что-то вроде навигационной цепочки, например "This PC\Galaxy Tab A\Card\Folder1"
, когда щелкаешь в адресной строке.
Проводник Windows также принимает такие пути при вводе или копировании их в адресной строке и нажатии возврата.
Интересно, есть ли способ проанализировать такие пути хлебных крошек с помощью Shell API и получить взамен PItemIDList
или IShellItem
. До сих пор мне не удалось использовать, например. SHParseDisplayName()
. Этот код
LPITEMIDLIST itemidlist;
HRESULT hr = SHParseDisplayName(L"This PC\\Galaxy Tab A\\Card\\testfolder", NULL, &itemidlist, 0, NULL);
вернул 0x80070002
как HRESULT
.
Вопрос SHParseDisplayName, когда путь не существует касается вопроса о том, как использовать IBindCtx
для анализа пути к файлу, который еще не существует. Это можно сделать с помощью контекста привязки STR_FILE_SYS_BIND_DATA
. Но объекты на мобильном устройстве не являются данными файловой системы, и они уже существуют, поэтому я не понимаю, почему это дубликат.
SHParseDisplayName()
- Что вы пробовали. Как это не оправдало ваших ожиданий? Кроме того, чего вы на самом деле пытаетесь достичь? - person IInspectable   schedule 03.05.2016SHParseDisplayName()
не удалось с ошибкой, я добавил код ошибки. Чего я пытаюсь добиться, так это получитьPItemIdList or
IShellItem` для пути хлебной крошки Explorer, который мне нужен для операций контекстного меню Shell. - person Joachim Marder   schedule 03.05.2016IBindCtx
в случае мобильных устройств или папки WebDAV?STR_FILE_SYS_BIND_DATA
, указанный в качестве примера, не будет работать. - person Joachim Marder   schedule 08.05.2016STR_FILE_SYS_BIND_DATA
для объекта, отличного от файловой системы? связанный пример кода в блоге ONT ожидает WIN32_FIND_DATAW - откуда это? Пример кода заполняет свои элементы атрибутами и размером. Одной из причин, по которой мне нужно получить ItemIdList объекта на мобильном устройстве, является то, что я хочу запросить такие метаданные. - person Joachim Marder   schedule 09.05.2016WIN32_FIND_DATAW
, так как это метаданные, которые я хочу запросить. Пожалуйста, ответьте на вопрос, почему я должен использоватьSTR_FILE_SYS_BIND_DATA
для объекта, не являющегося файловой системой? - person Joachim Marder   schedule 10.05.2016