Виртуальные файлы открываются из временных файлов Интернета.
Вопрос
Я создал расширение пространства имен, которое находится в рабочем столе.Основная цель расширения — предоставить виртуальный список ZIP-файлов, представляющий собой список настраиваемых каталогов.Когда пользователь щелкает один из этих элементов, содержимое связанного каталога архивируется, а полученный ZIP-файл сохраняется в папке кэша.
Все это работает хорошо, если не считать небольшой проблемы.Если мы зайдем в проводник Windows, откроем расширение и дважды щелкните элемент, то открытый файл будет файлом из кеша.[ПРАВИЛЬНЫЙ]
Если, с другой стороны, мы открываем его с помощью диалогового окна открытия, открытый файл находится в каталоге временных файлов Интернета.[НЕПРАВИЛЬНО]
Что мне нужно изменить, чтобы диалог открытия (при использовании, например, через notepad.exe) открывал файл из папки кэша, а не из временных файлов Интернета.Я всегда пытался отправить полное имя файла в IShellFolder::GetDisplayNameOf, но безуспешно.
Решение 2
Проблема решена маскировкой SFGAO_FILESYSTEM
в атрибутах, возвращаемых реализацией метода интерфейса IShellFolder::GetAttributesOf.
Другие советы
Похоже, вы не передаете правильный начальный каталог (в параметре lpstrInitialDir или lpstrFile вашей структуры OPENFILENAME).
Введите каталог кеша в lpstrInitialDir и оставьте lpstrFile пустым, и все должно работать.