2010-02-05 3 views
1

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

+0

Кто каждый пытался сделать это раньше? Я могу сделать это, пока элементы имеют один и тот же родительский элемент, но как вы вызываете меню с разными родительскими объектами? –

ответ

1

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

http://www.zabkat.com/blog/08Jul07.htm