Создание экземпляра IShellItem для несуществующего файла

Как я могу получить объект IShellItem для несуществующего файла (или каталог)?

Сначала я подумал, что это невозможно, но, например, IFileSaveDialog создает такой IShellItem за его результат (если в диалоге указать новый файл).


person gix    schedule 30.09.2010    source источник


Ответы (1)


Есть такая штука как простой pidl и они могут представлять несуществующие файлы. Итак, я думаю, вам нужны SHSimpleIDListFromPath и SHCreateItemFromIDList

person Anders    schedule 05.11.2010
comment
К сожалению, элемент оболочки, созданный таким образом, не принимается IFileOperation в качестве целевого пути. связанный контроль качества показывает, как заставить этот вариант использования работать. - person zett42; 23.09.2019
comment
@ zett42 Созданный здесь простой список идентификаторов указывает на файл, а не на каталог. Если вы укажете ему путь, например c:\foo\bar, а затем отрежете последний элемент с помощью ILRemoveLastID, тогда у вас должен быть каталог pidl для c:\foo. Метод, на который вы ссылаетесь, также работает и позволяет добавлять такие атрибуты, как скрытые и т. д. - person Anders; 23.09.2019
comment
Спасибо за предложение, но не пробовал. Я придерживаюсь решения IBindCtx, так как SHSimpleIDListFromPath() устарело. - person zett42; 24.09.2019