Привет, дорогие друзья, stackoverflow
Несколько месяцев назад я задал вам вопрос о QuickAccess (Pin / Unpin) . К сожалению, мы все еще сталкиваемся с этой проблемой (Невозможно открепить виртуальные объекты). Несколько раз позвонив в службу поддержки Microsoft, они ответили нам, что мы должны подписаться на первичную поддержку ... Слишком дорого для небольшой компании.
Итак, мы решили имитировать избранное Windows 7 в нашем расширении пространства имен оболочки.
Ничего страшного в проводнике, вызов ShellExecuteEx с дескриптором представления, а абсолютный pidl целевого объекта lnk работает как шарм.
Слишком хорошо, чтобы быть правдой, да, поскольку это не работает, как ожидалось в IFileDialogs ...
Во-первых, lnks (обернутый в виртуальный объект, но имя синтаксического анализа - «Путь к файловой системе») не был по понятным причинам показан в диалогах. Таким образом, мы попытались использовать такие атрибуты, как «SFGAO_FOLDER», «SFGAO_FILESYSANCESTOR» и т. Д., Но затем оболочка вызывала объект EnumObject объекта IShellFolder, а это не то, что нам нужно.
Итак, мы решили попробовать интерфейс IObjectWithSite, реализовав его в папке «Избранное». Затем мы смогли использовать события из IFileDialogs, такие как OnSelectionChange. Затем мы попробовали тот же метод, что и в проводнике, получая дескриптор представления (сначала запрашивая интерфейс IOleWindow, получая дескриптор окна, создавая представление в родительском IShellFolder с помощью дескриптора окна) и вызывая ShellExecuteEx ... И в результате получается ... Большое приложение (Блокнот , Word и т. Д.) Сбой и новое окно проводника с выбранным правым виртуальным объектом.
Возможно, мой подход слишком сложен, у вас есть идеи?
Большое спасибо!