Отображение контекстного меню Windows для нескольких элементов

StackOverflow https://stackoverflow.com/questions/2208284

Вопрос

У меня есть приложение, в котором перечислены файлы, и я разрешаю пользователю щелкнуть правой кнопкой мыши по файлу, и мое приложение показывает контекстное меню 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 чтобы создать контекстное меню для нескольких элементов оболочки.Здесь вы можете найти отличную информацию:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top