У меня есть список файлов в моем приложении, и я хотел бы разрешить людям щелкнуть правой кнопкой мыши на элементе и показать контекстное меню Windows Explorer. Я предполагаю, что мне нужно будет использовать интерфейс IContextMenu, но я не уверен, с чего начать.
Как вы показываете контекстное меню проводника Windows из приложения С#?
Ответ 1
Там очень хороший учебник (хотя и на С++) о размещении IContextMenu на блоге Raymond Chen в 11 частях (по порядку):
- Начальное наступление
- Отображение контекстного меню
- Место вызова
- Основной контекст
- Обработка сообщений меню
- Отображение справки меню
- Вызов глагола по умолчанию
- Оптимизация для команды по умолчанию
- Добавление пользовательских команд
- Составные расширения - земляные работы
- Композитные расширения - состав
Ответ 2
Я написал библиотеку, которая могла бы вам помочь. Вы можете использовать элементы управления, предоставляемые библиотекой, или если вы не хотите этого делать, просмотр кода может дать вам ответ.
Вы можете найти библиотеку по адресу: http://gong-shell.sourceforge.net/
Пожалуйста, дайте мне знать, если это помогло!
Ответ 3
Я нашел отличную статью Code Project, которая инкапсулирует все очень красиво в один класс!
Контекстное меню оболочки обозревателя
Это так же просто, как следующий фрагмент кода:
// Sample code
ShellContextMenu ctxMnu = new ShellContextMenu();
FileInfo[] arrFI = new FileInfo[1];
arrFI[0] = new FileInfo(this.treeMain.SelectedNode.Tag.ToString());
ctxMnu.ShowContextMenu(arrFI, this.PointToScreen(new Point(e.X, e.Y)));
Единственное неудобство заключается в том, что он принимает либо массив FileInfo [], либо массив DirectoryInfo [], хотя было очень просто немного изменить источник, чтобы потребовался массив FileSystemInfo []