Я пытаюсь добавить новую запись в контекстное меню 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. Вот шаги, которые я предпринял:
- Создан новый проект библиотеки классов Visual C ++ в VS 2005 с именем
'IETest'
в c:\IETest
- Импортировал мой
C:\test.htm
файл в файл ресурсов app.rc
по умолчанию. Я изменил ID
на TEST
- Скомпилированная DLL в режиме отладки
- Изменен параметр реестра для чтения
res://C:\IETest\debug\IETest.dll/TEST
Если я сейчас перезапущу IE и попытаюсь снова, окно сообщения не появится, когда я щелкну правой кнопкой мыши и выберу новую запись в контекстном меню. Я также безуспешно попробовал сборку релиза DLL, а также попытался заменить последнюю косую черту запятой и изменить путь одинарной и двойной косой черты.
Я могу только предположить, что я сделал что-то не так при создании моей DLL. Может кто-то указать мне верное направление? Можно ли как-нибудь проверить скомпилированную DLL, чтобы проверить ресурсы и связанные идентификаторы?
Спасибо.