Страницы: 1
Если нет предубеждения к дотнету
Проект не дотнетовский, "нативный", неохота stub городить ради этого.
Попробую найти старые исходники на том же ftp например. Должно же что-то быть. Пусть и старое, но хотелось бы малой кровью проблему решить.
Пересобрать ActiveX тоже не вариант, я скорее пойду на урезание функциональности для мозиллы по сравнению с IE.
зы. Благодарю за наводку про Deer Park.
Выполняю AServiceManager.GetServiceByContractID(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, VThreadManager);
Получаю ошибку "Класс не зарегистрирован".
В чём может быть проблема?
Используется Mozilla ActiveX Control v1.7.12 - там наверное пятилетней давности код - может быть что nsIThreadManager слишком новый для него? Что тогда заюзать?
зы. NS_THREADMANAGER_CONTRACTID = '@mozilla.org/thread-manager;1', вроде как правильно, так что проблема не в этом.
Ура.Сделал через FnsServiceManager.GetServiceByContractID('@mozilla.org/observer-service;1', nsIObserverService, FnsObserverService) и реализацию nsIObserver. Тупо добавил заголовок Proxy-Authorization: Basic XXXXXXXXXXXXXX
Может есть какое-то расширение (или лог), которое хотя бы покажет, какие сервисы вызываются, какие listener-ы и observer-ы используются, в общем стек вызовов через интерфейсы XPCOM?
Есть подозрение, что оно всё-таки пишется туда, куда обычно - в prefs.js в профиле
Отчитываюсь.
После того как я в коде инициализации закомментировал код установки работы без прокси (в рамках текущих настроек софтины) - то есть работать всё должно было с сохранёнными настройками - оно по-прежнему по-старому полезло в несуществующий проксик и обломалось.
Так что судя по всему ничего никуда не сохранилось, а если даже и сохранилось - то не туда, а если сохранилось и туда - то не прочиталось при старте )).
Что вообще говоря и требовалось.
не понимаю на кой чёрт связываться с Activex даже мозилловским
Чтобы к имеющейся поддержке IE добавить мозиллу, что ж тут непонятного?
Речь идёт не о проектах с нуля и только с поддержкой мозиллы. Речь о существующих проектах, в которых работает вебброузер IE и в котрые возможно добавить мозиллу примерно нахаляву.
азрабы ФФ выкинут её или прекратят поддержку
Оно и так пятилетней давности наверное. Причина использования описана выше. Реализовывать отдельный броузер на геко даже не собираюсь, это немного другая тема по затратам.
Некропостинг некропостингом, но проблема остаётся.
Продолжаем изучение XPCOM....... На этот раз задача следующая.
В приложении имеется информация о логине и пароле для прокси-сервера (все прочие варианты аутентификации вообще говоря не интересны).
За рамками приложения эта информация совершенно не нужна.
То есть в идеале кэширование логина и пароля может быть только в рамках текущей сессии, никаких сохранений.
Хотя если даже и попадут credentials в менеджер паролей, или как он там зовётся, то в принципе ничего страшного не будет.
Никак не могу понять логику работы с интерфейсами nsIAuth*. Пересмотрел исходники мозиллы. Всё без толку. В поиске тоже тут был.
Может у кого пример завалялся, или хотя бы умные мысли есть?
можно примерчики таких приложений?
1. Я разработчик ПО. Профессия такой. У меня таких есть несколько проектов. Вот теперь минимум в двух придётся залезть внутрь API мозиллы (прежде всего XPCOM), так что я не последний раз зашёл, сейчас вот с thread manager-ом бьюсь, пока он побеждает ))).
2. По чужим - понятия не имею. На него легко заменяется "штатный" ActiveX от M$, тот который IE, их в принципе можно вообще на лету переключать. Так что вообще говоря таковых может быть очень много.
>у ФФ свои отдельные настройки прокси которые систему не затрагивают
У нас с Вами видимо разные понятия о "системе".
Поскольку приложений, которые используют Mozilla ActiveX Control v1.7.12, может быть сильно больше чем 1, то все они с тем же успехом подпадают под требование "чтобы в других приложениях никаких изменений не случилось".
А про системные настройки типа настроек MSIE я вообще ничего не имею в виду.
>Без этой точки
Ура. Благодарю. Всё получилось. Даже после закрытия софтины ничего никуда в \greprefs\all.js не записывается. Идеально.
>нифига непонятно что ты хочешь получить
надо умудриться установить настройки прокси так, чтобы в других приложениях никаких изменений не случилось
То есть только в рамках текущей сессии.
Работаю с ActiveX - тот который Mozilla ActiveX Control v1.7.12.
Настройки хранятся в \greprefs\all.js, если это важно.
В приложении свои настройки прокси (оно и напрямую качает, и через IE тоже работает).
Поэтому надо умудриться установить настройки прокси так, чтобы в других приложениях никаких изменений не случилось.
Возможно это даже лучше назвать/сделать не заменой настроек, а каким-нибудь перехватом чего-нибудь сетевого.
Пытаюсь сделать вот как:
1. Когда ActiveX уже загружен - вызываю GetModuleHandle для xpcom.dll - успешно.
2. Вызываю NS_GetServiceManager (ищется через GetProcAddress) и получаю nsIServiceManager - успешно.
3. Потом GetServiceByContractID(NS_PREFSERVICE_CONTRACTID, nsIPrefService, VnsIPrefService) - успешно.
4. Потом VnsIPrefBranch := VnsIPrefService.GetBranch('network.proxy') - и это успешно.
5. Потом исполняю типа
VnsIPrefBranch.SetIntPref('type',1);
VnsIPrefBranch.SetCharPref('http',PAnsiChar(VInfo.Host));
VnsIPrefBranch.SetIntPref('http_port',VInfo.Port);
ил
Страницы: 1