Отображение контекстного меню Windows для нескольких элементов - PullRequest
2 голосов
/ 05 февраля 2010

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

1 Ответ

1 голос
/ 10 февраля 2010

Для дальнейшего использования, очевидно, вы можете использовать CDefFolderMenu_Create2, чтобы создать контекстное меню для нескольких элементов оболочки. Вы можете найти отличную информацию здесь:

...