Добавление элемента в контекстное меню Internet Explorer, вызываемое правой кнопкой мыши - PullRequest
3 голосов
/ 24 апреля 2009

Я пытаюсь добавить новую запись в контекстное меню Internet Explorer, вызываемое правой кнопкой мыши. Я понимаю, что это может быть достигнуто путем создания HTML-файла, содержащего JavaScript, а затем ссылки на него из расположения в реестре. Я также читал, что вы также можете добавить HTML в файл ресурсов и скомпилировать его в DLL (см. Microsoft KB: Добавление записей в стандартное контекстное меню ). Здесь я начал сталкиваться с проблемами.

Вот немного предыстории о том, что я сделал до сих пор.

  • У меня есть следующий JavaScript в файле C:\test.htm:
<script type="text/javascript">
    alert('Hello, world!');
</script>
  • Я добавил новое значение REG_SZ 'c:\test.htm' в реестр по следующему адресу:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

Если я сейчас перезапущу IE, мой новый пункт меню появится в контекстном меню. Если я выберу свой новый пункт меню, мое окно сообщения будет отображаться как ожидалось. Все идет нормально. Тем не менее, я не могу получить доступ к сценарию, если он находится в DLL. Вот шаги, которые я предпринял:

  1. Создан новый проект библиотеки классов Visual C ++ в VS 2005 с именем 'IETest' в c:\IETest
  2. Импортировал мой C:\test.htm файл в файл ресурсов app.rc по умолчанию. Я изменил ID на TEST
  3. Скомпилированная DLL в режиме отладки
  4. Изменен параметр реестра для чтения
res://C:\IETest\debug\IETest.dll/TEST

Если я сейчас перезапущу IE и попытаюсь снова, окно сообщения не появится, когда я щелкну правой кнопкой мыши и выберу новую запись в контекстном меню. Я также безуспешно попробовал сборку релиза DLL, а также попытался заменить последнюю косую черту запятой и изменить путь одинарной и двойной косой черты.

Я могу только предположить, что я сделал что-то не так при создании моей DLL. Может кто-то указать мне верное направление? Можно ли как-нибудь проверить скомпилированную DLL, чтобы проверить ресурсы и связанные идентификаторы?

Спасибо.

1 Ответ

2 голосов
/ 24 апреля 2009

Вы пробовали, чтобы идентификатор был TEST.html? Я предполагаю, что IE не знает, как обращаться с файлом, потому что у него нет списка расширений, но это полностью предположение, основанное на том факте, что некоторые MS .dll идентифицируют их (т.е. res: // c: \ Windows \ system32 \ Shdoclc.dll / navcancl.htm)

Единственное, о чем я могу подумать, это убедиться, что ваши ресурсы относятся к типу 23.

ResourceHacker может просматривать файлы ресурсов, как вы хотите: http://angusj.com/resourcehacker/

...