1. Как добавить пункты меню в контекстное меню IE
Друзья, которые использовали Netants, возможно, знают, что NetAnts добавила функцию контекстного меню в IE. Пока вы щелкаете правой кнопкой мыши ссылку или изображение на странице и выбираете в меню «Вниз по Netants», вы можете позвонить в Netants для загрузки. файл, на который указывает ссылка. В этой статье автор расскажет, как реализовать такую функцию через VB.
Для реализации функции добавления пунктов меню в контекстное меню IE необходимо последовательно реализовать следующие шаги:
1. Создайте новый элемент в разделе реестра HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt. Имя элемента отображается в качестве заголовка в меню. Например, заголовок элемента меню, который вы хотите создать. Добавьте URL-адрес, затем имя нового элемента
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExtДобавить URL-адрес
2. Установите значение по умолчанию для нового элемента в виде URL-адреса. Когда пользователь нажимает на элемент меню, IE вызывает сценарий на странице, на которую указывает URL-адрес. В сценарии целевой страницы получите доступ к атрибуту менюАргументы. внешнего объекта, предоставленного IE. Вы можете получить доступ к различным объектам на странице в IE, таким как ссылки, изображения, поля форм, выделенный текст и т. д. Подробную информацию об объекте InternetExplore можно найти в MSDN.
Если вы знакомы с объектом Window, вы сможете лучше понять следующий сценарий.
Для решения проблемы реализации нашей собственной программы для доступа к менюАргументы мы можем следовать подходу Нетанта и сначала создать
Объект OLE-автоматизации, а затем вызовите объект в сценарии и передайте информацию о странице объекту для обработки. Далее нам нужно сначала создать объект через VB:
Откройте VB, щелкните меню: Файл | Создать, выберите ActiveX Dll в окне нового проекта и нажмите клавишу ОК, чтобы создать ActiveX DLL.
проект. Затем измените свойство Name класса Class1 на NetAPI в окне списка проектов, а затем добавьте следующий код в окно кода NetAPI:
Публичный дополнительный URL-адрес (URL-адрес в виде строки, информация в виде строки)
Информация о MsgBox, vbOKOnly, URL-адрес
Конец субтитра
Сохраните файл и сохраните файл проекта как NetSamp.vbp. Затем выберите в меню Файл | Создать NetSamp.dll, чтобы создать библиотеку динамической компоновки объекта.
Далее идет библиотека регистрации. Найдите Regsvr32.exe в каталоге Windows, а затем скопируйте его в каталог, где находится netsamp.dll.
Перетащите значок netsamp.dll на Regsvr32.exe и отпустите его. В это время Regsvr32.exe откроет диалоговое окно с сообщением об успешной регистрации объекта.
Откройте UltraEdit (или другой текстовый редактор) и введите в редактор следующий код сценария:
Sub OnContextMenu()
При ошибке Возобновить Далее
установите srcEvent = external.menuArguments.event
установить EventElement = external.menuArguments.document.elementFromPoint(srcEvent.clientX, srcEvent.clientY)
set objNetSamp=CreateObject("NetSamp.NetAPI")
если srcEvent.type = "MenuExtAnchor", то
установить srcAnchor = EventElement
делать до тех пор, пока TypeName(srcAnchor)="HTMLAnchorElement"
установите srcAnchor=srcAnchor.parentElement
Петля
Вызов objNetSamp.AddUrl(srcAnchor.href,srcAnchor.innerText)
elseif srcEvent.type="MenuExtImage" тогда
если TypeName(EventElement)="HTMLAreaElement" тогда
Вызов objNetSamp.AddUrl(EventElement.href,EventElement.Alt)
еще
установить srcImage = EventElement
установите srcAnchor = srcImage.parentElement
делать до тех пор, пока TypeName(srcAnchor)="HTMLAnchorElement"
установите srcAnchor=srcAnchor.parentElement
если TypeName(srcAnchor)="Ничего", то
вызовите objNetSamp.AddUrl(srcImage.href,srcImage.Alt)
выход из субмарины
конец, если
Петля
Вызов objNetSamp.AddUrl(srcAnchor.href, srcImage.Alt)
конец, если
elseif srcEvent.type="MenuExtUnknown" тогда
установить srcAnchor = EventElement
делать до тех пор, пока TypeName(srcAnchor)="HTMLAnchorElement"
установите srcAnchor=srcAnchor.parentElement
если TypeName(srcAnchor)="Ничего", то
Вызов objNetSamp.AddUrl(EventElement.href,EventElement.innerText)
выход из субмарины
конец, если
Петля
Вызов objNetSamp.AddUrl(srcAnchor.href,srcAnchor.innerText)
конец, если
конец субтитра
вызовOnContextMenu()
Сохраните файл в папке c:program files с именем geturl.htm.
Как видно из приведенного выше сценария, сначала обратитесь к свойству external.menuArguments, чтобы получить объект, где пользователь нажимает правую кнопку мыши, затем получите его URL-адрес на основе объекта, затем создайте объект IEContextMenu.IEMenu1 и вызовите AddURL объекта. метод.
Следующий шаг — создать пункт регистрации для контекстного меню, открыть UltraEdit (или другой текстовый редактор) и ввести в редактор следующие регистрационные данные.
Редактор реестра Windows версии 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt&Получить URL]
@="c:\program files\geturl.htm"
"Contexts"=dword:00000022
Сохраните файл с суффиксом reg, затем дважды щелкните файл в проводнике Windows, чтобы добавить регистрационный ключ в реестр, а затем откройте его.
IE щелкните правой кнопкой мыши ссылку или изображение, и во всплывающем меню появится пункт «Получить URL». Щелкните этот элемент, и появится окно сообщения с URL-адресом выбранной ссылки или изображения.
Давайте представим роль пункта «Контексты» в приведенном выше элементе регистрации. С помощью этого пункта вы можете указать, какой пункт меню появляется при щелчке правой кнопкой мыши по объекту в IE. Это может быть комбинация «ИЛИ» следующих значений:
стоимость объекта
По умолчанию 0x1
Изображение 0x2
Управление 0x4
Поле формы 0x8
Выбрать текст 0x10
Точка привязки 0x20
Например, выше мы хотим, чтобы элемент меню появлялся, когда пользователь нажимает на изображение или гиперссылку, затем мы устанавливаем значение dword:00000022, что означает, что меню будет появляться, когда пользователь нажимает на изображение или якорь. Якорь — это объект на странице, описывающий гиперссылку. Если пункт «Контексты» не установлен, пункты меню будут появляться в контекстном меню при нажатии на любой объект.
Из приведенного выше описания программы мы можем увидеть рабочий процесс контекстного меню мыши IE. Как упоминалось ранее, NetAnts использует этот метод для вызова NetAnts путем создания объектов в сценариях. Если мы устанавливаем NetAnts, мы можем вызывать NetAnts в программе, вызывая объект NetAnts.
Создайте новый проект, щелкните элемент «Проекты | Ссылки» в меню и выберите элемент «Библиотека типов AntAPI 1.0». Если кнопка «Браузер» не нажата, выберите NetAPI.dll в каталоге Network Ant в списке файлов и нажмите «Открыть». ключ. Добавьте CommandButton в форму 1.
кнопку, добавьте следующий код в событие Command1_Click:
Тусклый муравей как новый ANTAPILib.AntAPIObj
ant.AddUrl " http://www.downcodes.com/ "
Нажмите команду1, после чего запустится NetAnts и 7. HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions<Ваш GUID> в реестре.
Создайте новое значение типа String с именем Clsid и установите для него значение {1FBA04EE-3024-11D2-8F1F-0000F87ABD16}.
8. В реестре HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions<Ваш GUID>
Создайте новое значение типа String с именем Exec. Это значение определяет полный путь к файлу, который будет запущен после нажатия кнопки, например:
c:program filessamplesnet.exe
Например, содержимое раздела реестра кнопки NetAnts следующее:
Редактор реестра Windows версии 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions{57E91B47-F40A-11D1- B792 -444553540000}]
"CLSID"="{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}"
"Видимый по умолчанию"="Да"
"HotIcon"="C:\PROGRA~1\NETANTS\NetAnts.exe,1001"
"Icon"="C:\PROGRA~1\NETANTS\NetAnts.exe,1000"
"Exec"="C:\PROGRA~1\NETANTS\NetAnts.exe"
"ButtonText"="NetAnts"
"MenuText"="&NetAnts"
"MenuStatusBar"="Launch NetAnts"
NetAnts будет запускаться при нажатии кнопки NetAnts. Следующие два элемента в приведенном выше ключе реестра: ключ MenuText добавляет пункт меню на панель «Инструменты» меню, а ключ MenuStatusBar определяет текст подсказки, который отображается в строке состояния, когда курсор перемещается в добавленное меню. бар. Кроме того, в реестре
Вы также можете добавить файл с именем
Значение строкового типа MenuCustomize. Если для этого значения установлено значение «Справка», пункт меню появится в строке меню «Справка», в противном случае он появится на панели «Инструменты».
Конечно, нас не удовлетворит простое добавление кнопки и выполнение программы. Мы надеемся, что сможем управлять текущей страницей, когда пользователь нажимает кнопку, которая находится в реестре HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions. <Ваш GUID>
Создайте новое значение типа String и задайте в качестве имени полный путь к html-файлу. Так же, как при добавлении контекстного меню, представленного ранее, IE будет вызывать файл после нажатия кнопки и получать к нему доступ, установив VBScript в поле. file Свойство MenuArguments внешнего объекта может получить страницу в браузере. Например, мы будем HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions<Ваш GUID>VBScript.
Установите значение c:program filessamp.htm, затем создайте файл с именем Samp.htm в папке c:program files и введите в него следующее содержимое сценария:
Set objNetSamp=CreateObject("IEContextMenu.IEMenu1")
userURL=external.menuArguments.location.href
Вызовите objNetSamp.AddUrl(userURL,"")
Откройте браузер IE, нажмите кнопку «Создать», и появится диалоговое окно с URL-адресом текущей страницы. Обратите внимание, что этот элемент нельзя использовать одновременно с ранее установленным элементом Exec.
Наконец, для значков кнопок IE требует значков двух размеров: 20x20 и 16x16. Первый используется для отображения в обычном состоянии, а второй — для отображения в полноэкранном режиме, поэтому ресурсы значков, на которые указывают HotIcon и Icon выше, должны использоваться. быть комбинацией трех значков. Характеристики этих трех значков следующие:
16-цветная иконка размером 16x16 (обязательно)
16-цветный значок 20x20 (необязательно)
Иконка размером 20x20, 256 цветов (обязательно)
При разработке значков 256-цветные значки должны использовать полутоновую палитру Windows, а 16-цветные значки — 16-цветную палитру Windows.
http://www.cnblogs.com/goody9807/archive/2006/12/04/581359.html