Как практически настроить контекстное меню IE? - PullRequest
3 голосов
/ 08 апреля 2010

Мне нужно добавить один пункт меню в контекстное меню IE.Аналогично настраиваемому контекстному меню Google «Поиск в Google для xxx», когда вы щелкаете правой кнопкой мыши IE.

Я провел исследование и обнаружил, что переопределение IDocHostUIHandler :: ShowContextMenu в IE BHO может настраивать контекстное меню IE.Пример проекта можно найти в проекте блокировщика всплывающих окон, опубликованном в codeproject.Он хорошо работает и прост в реализации. Однако у этого подхода есть проблема.Проблема в том, что он будет конфликтовать с настройкой контекстного меню других надстроек для MSDN.

На форуме MSDN Internet Explorer Center есть некоторые обсуждения по этой теме.Однако, нет надлежащей реализации размещены.

Если у кого-то есть опыт в этом, поделитесь своей идеей.Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

См. Добавление записей в стандартное контекстное меню в MSDN.

Для примера кода загрузите и извлеките Веб-аксессуары для Internet Explorer 5 (механизм все еще работает в версиях IE вплоть до 8 включительно). Посмотрите на ie5wa.inf и *.html примеры различных расширений контекстного меню IE.

Обратите внимание, что abive достигается без COM, только с помощью одного параметра реестра и файла, содержащего большую часть сценария (Javascript, JScript, VBScript и т. Д.). Сценарий (JScript, VBScript) может, в свою очередь, работать с объектами COM, ваша логика действий меню находится в таком объекте, например

  • создать HKCU\Software\Microsoft\Internet Explorer\MenuExt\My &Context Menu" registry key ( & `перед ускорителем меню буква, если есть)
  • установить значение по умолчанию для клавиши, указывающее на файл, содержащий код сценария, реализующий действие (я) контекстного меню, возможно взаимодействующее с COM-объектом (должен поддерживать IDispatch IIRC; также считывается с Зона безопасности моего компьютера )
  • создает двоичное значение contexts (0x02 для изображений, 0x10 для выборок и т. Д.), Которое регулирует время отображения нового контекстного меню
0 голосов
/ 18 июня 2011

Я настроил свой IE для перехода к выбранному тексту. Вы можете прочитать полный текст и получить подробный исходный код здесь .

В основе моего решения лежит следующий код JavaScript и раздел реестра [HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ MenuExt]:

  var parentwin = external.menuArguments;
  var doc = parentwin.document;
  var sel = doc.selection;
  var rng = sel.createRange();
  var str = new String(rng.text);

  if(0 < str.length)
  {
    if (str.indexOf("http")!=0)
        window.open("http://"+str, "_blank");
    else 
        window.open(str, "_blank");
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...