Отображение контекстного меню Windows для нескольких элементов
-
18-09-2019 - |
Вопрос
У меня есть приложение, в котором перечислены файлы, и я разрешаю пользователю щелкнуть правой кнопкой мыши по файлу, и мое приложение показывает контекстное меню Windows для выбранного файла.
Я использую SHParseDisplayName
чтобы получить pidl для имени файла.Затем я привязываюсь к родительскому объекту:
IntPtr pidlLast = IntPtr.Zero;
SHBindToParent(pidl, typeof(IShellFolder).GUID, out oShellFolder, out pidlLast);
После того, как у меня будет родительский элемент, я смогу создать контекстное меню:
IntPtr result = IntPtr.Zero;
IShellFolder shellFolder = (IShellFolder)oShellFolder;
shellFolder.GetUIObjectOf(windowHandle, (uint)pidls.Count,
pidls.ToArray(), typeof(IContextMenu).GUID, 0, out result);
Это отлично работает для 1 элемента или для элементов с одним и тем же родителем, но как мне отобразить контекстное меню для элементов с разными родителями?
Решение
Для дальнейшего использования, по-видимому, вы можете использовать CDefFolderMenu_Create2
чтобы создать контекстное меню для нескольких элементов оболочки.Здесь вы можете найти отличную информацию:
- [xplorer2] [xplorer2] — Расширенное контекстное меню оболочки 🕗