Коллеги, помогите с такими вопросами:

1) Нужно написать плагин для FireFox на Delphi, который бы имел к DOM (доменной модели документа) открытой веб-странички. Буду благодарен за любую инфу. Может есть варианты и хоть какие-то примеры на С++?

2) Как из внешней программы определить УРЛ окна FireFox по его Handle?

alexvir, думаю, тебе лучше спросить здесь: http://xpoint.ru/forums/programming/XUL/forum.xhtml

Здесь: http://ftp.mozilla.org/pub/mozilla.org/ … c-msvc.zip SDK для FF 1.0.

Здесь: http://www.mozilla.org/projects/xpcom/b … df/cxc.pdf о создании компонентов XPCOM.

Anton пишет

alexvir, думаю, тебе лучше спросить здесь: http://xpoint.ru/forums/programming/XUL/forum.xhtmlЗдесь: http://ftp.mozilla.org/pub/mozilla.org/ … c-msvc.zip SDK для FF 1.0.

Здесь: http://www.mozilla.org/projects/xpcom/b … df/cxc.pdf о создании компонентов XPCOM.

Спасибо за помощь!
Я так понимаю (облазил почти все, что можна, в нете) на дельфи никто не писал плагины под FireFox???

ИМХО, вряд ли кто-то заморачивался, ибо SDK на C, соответственно, чтобы написать чего-то на дельфи надо переписывать нужные исходные файлы на паскале. Ты будешь первым :)

И еще, немного о терминах:

1. Плагины для FF реализуют отображение объектов в HTML-страницах, получают управление только при наличии этих объектов в веб-странице или при открытии файла с соответсвующим плагину содержимым.

2. Компоненты XPCOM реализуют дополнительные интерфейсы для расширения функциональности.

3. Расширения. Имеют доступ к интерфейсам XPCOM и плагинов, но пишутся только на XUL+JS.

DOM - Document Object Model

Anton пишет

ИМХО, вряд ли кто-то заморачивался, ибо SDK на C, соответственно, чтобы написать чего-то на дельфи надо переписывать нужные исходные файлы на паскале. Ты будешь первым :)

И еще, немного о терминах:

1. Плагины для FF реализуют отображение объектов в HTML-страницах, получают управление только при наличии этих объектов в веб-странице или при открытии файла с соответсвующим плагину содержимым.

2. Компоненты XPCOM реализуют дополнительные интерфейсы для расширения функциональности.

3. Расширения. Имеют доступ к интерфейсам XPCOM и плагинов, но пишутся только на XUL+JS.

DOM - Document Object Model

Ув. Anton.
Вы имеете опыт разработки плагинов для FireFox?
Опишу в 2х словах задачу. Нужно сделать плагин, который бы автоматически заполнял форму "логина" веб-странички. Откуда берутся логин, пароль и т.п. я опускаю, т.к. это не имеет особого значения.

Мне непонятно к каким интерфейсам нужно обращаться, чтобы получить доступ к формам документа, и как заполнить поля формы???

Если я правильно понял мне нужно написать именно Компонент XPCOM.

Т.е. применимо к архитектуре IE я реализовал Browser Helper Object, и имея IWebBrowser мог получить доступ к документу и соответственно его формам.

alexvir, мне кажется, что для данной задачи, куда как проще будет разработать расширение, использующее интерфейсы встроенных компонентов XPCOM.

Попробую прояснить положение вещей:

1. FireFox представляет собой XUL-приложение, выполняющееся на движке Gecko.
2. Для расширения функциональности FF используются расширения, которые также являются XUL-приложениями (оверлеями).
3. XPCOM-компоненты предоставляют интерфейсы для XUL-приложений.
4. Плагины используют Plug-in API Gecko для отображения объектов, внедренных в веб-страницу тегами EMBED или OBJECT, либо при открытии файлов тех типов, для которых разработан плагин.

То есть, для использования интерфейса компонента XPCOM все равно требуется расширение. Бинарник получает управление только тогда, когда его "попросит" приложение XUL.

Что же касается внешних COM-интерфейсов Gecko, которые могли бы дать доступ к Лису из внешних приложений, то тут я ничего посоветовать не могу, так как сам не знаю.

alexvir пишет
Anton пишет

ИМХО, вряд ли кто-то заморачивался, ибо SDK на C, соответственно, чтобы написать чего-то на дельфи надо переписывать нужные исходные файлы на паскале. Ты будешь первым :)

И еще, немного о терминах:

1. Плагины для FF реализуют отображение объектов в HTML-страницах, получают управление только при наличии этих объектов в веб-странице или при открытии файла с соответсвующим плагину содержимым.

2. Компоненты XPCOM реализуют дополнительные интерфейсы для расширения функциональности.

3. Расширения. Имеют доступ к интерфейсам XPCOM и плагинов, но пишутся только на XUL+JS.

DOM - Document Object Model

Ув. Anton.
Вы имеете опыт разработки плагинов для FireFox?
Опишу в 2х словах задачу. Нужно сделать плагин, который бы автоматически заполнял форму "логина" веб-странички. Откуда берутся логин, пароль и т.п. я опускаю, т.к. это не имеет особого значения.

Мне непонятно к каким интерфейсам нужно обращаться, чтобы получить доступ к формам документа, и как заполнить поля формы???

Если я правильно понял мне нужно написать именно Компонент XPCOM.

Т.е. применимо к архитектуре IE я реализовал Browser Helper Object, и имея IWebBrowser мог получить доступ к документу и соответственно его формам.

Если я вас правильно понял, то эта возможность уже реализована в  AI Roboform

Fisherman пишет

Если я вас правильно понял, то эта возможность уже реализована в  AI Roboform

Не совсем. AI Roboform встраивается внутрь браузеров (если я прав), а моя программа независима от браузеров и позволяет заполнять также любые формы авторизации любых программ.

GigoVich пишет

Возможно чем-то помогу. Не совсем в тему, но alexvir не совсем по вопросу. Ссылочка на http://nesitive.net/files/GeckoSDK.zip здесь типа все основные хедер файлы на паскале, для Дельфи если кто хочет юзать Gecko в своём приложении на Дельфях. Ну если не можешь написать расширения, попробуй написать браузер, точнее просто встроить его в приложение на дельфях :) Встроить то я встроил, но вот к DOM управление получить не смог, но это вызванно было тем наверное что инетерфейсы описанные в хедерах на паскале были чуточку различны с реальными (пару раз мне такое попадалось). Одним словом, не совсем в тему но на поиск данного файла много времени потратил, потому как проект этот ведут толи китайцы толи японцы или кто-то ещё :) одним словом сплошные иероглифы.
P.S. Заюзать браузер для использования в приложении на Delphi можно так же через ActiveX
P.S.P.S. Сплошное извращение!!!

Большое спасибо! Мож и пригодится, но похоже прийдется писать на С++.

Дайте кто нибудь, пожалуйста, расширение "Здравствуй мир" на Дельфи ?

Мне нужно сделать парсинг текста странички, с изменением некоторых его частей. Такое в принципе возможно сделать в расширении ?

flaps, расширения не пишутся на Дельфи. На Дельфи можно написать только какой-нибудь компонент расширения. Может быть, для вашей задачи лучше подойдет написание скрипта для Greasemonkey ?

http://diveintogreasemonkey.org

Anton

расширения не пишутся на Дельфи. На Дельфи можно написать только какой-нибудь компонент расширения. Может быть, для вашей задачи лучше подойдет написание скрипта для Greasemonkey ?

Я не силён в этих терминах. Если есть "Здравствуй мир" для Дельфи на чём то другом, то хорошо. А если нет, то плохо.

Anton

расширения не пишутся на Дельфи.

А плагины ? В папке plugins лежит какая-то dll. А dll на Дельфи писать можно.

Плагины и компоненты XPCOM - можно.

Anton

Плагины и компоненты XPCOM - можно.

А "Здравствуй мир" можно ? Неужели никто ещё не написал плагин или компонент ХРСОМ "Здравствуй мир" на Дельфи ?

Можно ли из плагина добраться к содержимому HTML страницы? У меня получилось взять потроха объекта:

Выделить код

Код:

NPObject *DOMElement;
NPN_GetValue(m_pNPInstance, NPNVPluginElementNPObject, &DOMElement);

А мне нужен весь HTML.

nickspring, у Вас получилось создать скриптабельный плагин???
Дайте, пожалуйста, рабочий пример, а то уже неделю занимаюсь любовью и не получается достучаться к функциям dll.

Неужели ни кого нет примера? Я уже неделю мучаюсь....... И не получается :cry:

Где, как и в чем нужно писать плагины под [firefox], я хочу написать темку.

28-01-2010 13:03:29
Как  написать свой собственный бар под [firefox]

Добрый вечер!
У меня схожие задачи как и у автора темы и я тоже пишу на Делфи, думал на нем и писать, но почитав инет и эту тему, понял, что делфи - совсем не то :(
Подскажите пожалуйста с чего начать, что читать и что вообще должно получится? Или может быть моя задача вообще уже давно решена?
Задача: при заполнении одного из 20 полей формы, вводимый в это поле текст должен дублироваться еще в нескольких других полях. Форма всегда одинаковая и поле источник и поля для дублирования тоже всегда одни и теже.
Заранее спасибо!