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