Насколько я могу судить, нет, все еще нет хорошего способа выполнить эту, казалось бы, простую задачу.
Для будущих читателей есть два метода (один из которых упоминает OP), которые вы можете рассмотреть, чтобы добавить пункты контекстного меню.
Метод регистрации
К сожалению, в Internet Explorer нет способа создать "расширенные" меню с использованием метода реестра . Доступна простая «контекстная» фильтрация, но не более того. Чтобы подвести итог этого метода, описанного в ссылке, сначала добавьте новый подраздел по адресу:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\<Menu Text>
<MenuText>
- это текст, который отображается в контекстном меню в Internet Explorer. Использование &
для клавиш ускорения работает как положено.
Установите для значения (Default)
путь к файлу script , который нужно выполнить. Это может быть Javsascript, VB Script и т. Д. Если вы создаете BHO, было бы разумно упаковать его вместе с вашей DLL / EXE; получить доступ к нему с помощью res://
. Например, в моей системе есть запись с именем E&xport to Microsoft Excel
со значением:
res://C:\PROGRA~2\MICROS~1\Office12\EXCEL.EXE/3000
Метод IDocHostUIHandler
Этот метод эффективно заменяет все контекстное меню IE на то, которое BHO генерирует программно. В то время как чрезвычайно гибкий, это очень обескураженный . Если более чем один BHO пытается это сделать, результаты могут быть катастрофическими. Я нашел работающий пример этого метода в учебнике CodeProject по блокировщику всплывающих окон , но не пробовал сам по указанным причинам.
Дополнительная информация:
Я активно работаю над проектом, который включает в себя многие из этих компонентов. Я постараюсь постоянно обновлять этот пост, если найду какие-либо простые решения.