Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№118-10-2012 20:56:15

vasketsov
Участник
 
Группа: Members
Зарегистрирован: 18-10-2012
Сообщений: 11
UA: Opera 12.0

Программно заменить настройки прокси

Работаю с 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);
или наоборот
VnsIPrefBranch.SetIntPref('type',0); // в реальности пытаюсь включить прямое подключение без прокси
и по-прежнему никаких проблем.
6. По завершению процедуры все интерфейсы сами релизятся.

И ничего не меняется (((.

В all.js прописан заведомо недоступный endpoint 127.0.0.1:8080.
При Navigate после этой всей процедуры - я по-прежнему получаю сообщение об ошибке, что коннект к прокси отвергнут - то есть явно ничего не переключилось. Да и после закрытия софтины ничего нового в all.js не сохраняется.

Что я делаю не так?

Отсутствует

 

№218-10-2012 21:33:14

vasketsov
Участник
 
Группа: Members
Зарегистрирован: 18-10-2012
Сообщений: 11
UA: Opera 12.0

Re: Программно заменить настройки прокси

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

Отсутствует

 

№318-10-2012 22:08:05

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 17.0

Re: Программно заменить настройки прокси

vasketsov пишет

4. Потом VnsIPrefBranch := VnsIPrefService.GetBranch('network.proxy') - и это успешно.

VnsIPrefService.GetBranch('network.proxy

.

')
Без этой точки ваши попытки установить значения настроек привели к тому, что были созданы новые настройки network.proxytype, network.proxyhttp etc. - вместо изменения существующих настроек network.proxy.type, network.proxy.http. Разумеется, эти новые настройки ни на что не влияют.
Просто понятие бранча в терминологии системы настроек достаточно условное, а точка как разделитель частей настройки - ещё большая условность, и совсем не то же самое, что, например, слэш как разделитель в ключах реестра. Вполне можно было бы написать

VnsIPrefService.GetBranch('network.pr')

и тогда к настройкам нужно было бы обращаться как

VnsIPrefBranch.SetIntPref('oxy.type',1);

- т.е. имя бранча плюс имя настройки всегда должны давать полное имя настройки со всеми символами.

Отредактировано hydrolizer (18-10-2012 22:16:26)

Отсутствует

 

№418-10-2012 23:05:11

vasketsov
Участник
 
Группа: Members
Зарегистрирован: 18-10-2012
Сообщений: 11
UA: Opera 12.0

Re: Программно заменить настройки прокси

>у ФФ свои отдельные настройки прокси которые систему не затрагивают
У нас с Вами видимо разные понятия о "системе".
Поскольку приложений, которые используют Mozilla ActiveX Control v1.7.12, может быть сильно больше чем 1, то все они с тем же успехом подпадают под требование "чтобы в других приложениях никаких изменений не случилось".
А про системные настройки типа настроек MSIE я вообще ничего не имею в виду.

>Без этой точки
Ура. Благодарю. Всё получилось. Даже после закрытия софтины ничего никуда в \greprefs\all.js не записывается. Идеально.

Отсутствует

 

№518-10-2012 23:47:04

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 17.0

Re: Программно заменить настройки прокси

vasketsov пишет

\greprefs\all.js

Есть подозрение, что оно всё-таки пишется туда, куда обычно - в prefs.js в профиле. Чтобы на момент повторного открытия настройки были неизмененными, создайте в профиле файл user.js, и внесите туда нужные значения - тогда значения настроек будут меняться только на время сеанса.

Отредактировано hydrolizer (18-10-2012 23:47:53)

Отсутствует

 

№619-10-2012 16:11:47

vasketsov
Участник
 
Группа: Members
Зарегистрирован: 18-10-2012
Сообщений: 11
UA: Opera 12.0

Re: Программно заменить настройки прокси

okkamas_knife пишет

можно примерчики таких приложений?

1. Я разработчик ПО. Профессия такой. У меня таких есть несколько проектов. Вот теперь минимум в двух придётся залезть внутрь API мозиллы (прежде всего XPCOM), так что я не последний раз зашёл, сейчас вот с thread manager-ом бьюсь, пока он побеждает ))).
2. По чужим - понятия не имею. На него легко заменяется "штатный" ActiveX от M$, тот который IE, их в принципе можно вообще на лету переключать. Так что вообще говоря таковых может быть очень много.

Отсутствует

 

№719-10-2012 17:14:08

vasketsov
Участник
 
Группа: Members
Зарегистрирован: 18-10-2012
Сообщений: 11
UA: Opera 12.0

Re: Программно заменить настройки прокси

okkamas_knife пишет

не понимаю на кой чёрт связываться с Activex даже мозилловским

Чтобы к имеющейся поддержке IE добавить мозиллу, что ж тут непонятного?
Речь идёт не о проектах с нуля и только с поддержкой мозиллы. Речь о существующих проектах, в которых работает вебброузер IE и в котрые возможно добавить мозиллу примерно нахаляву.

okkamas_knife пишет

азрабы ФФ выкинут её или прекратят поддержку

Оно и так пятилетней давности наверное. Причина использования описана выше. Реализовывать отдельный броузер на геко даже не собираюсь, это немного другая тема по затратам.

Отсутствует

 

№819-10-2012 21:34:22

vasketsov
Участник
 
Группа: Members
Зарегистрирован: 18-10-2012
Сообщений: 11
UA: Opera 12.0

Re: Программно заменить настройки прокси

hydrolizer пишет

Есть подозрение, что оно всё-таки пишется туда, куда обычно - в prefs.js в профиле

Отчитываюсь.
После того как я в коде инициализации закомментировал код установки работы без прокси (в рамках текущих настроек софтины) - то есть работать всё должно было с сохранёнными настройками - оно по-прежнему по-старому полезло в несуществующий проксик и обломалось.
Так что судя по всему ничего никуда не сохранилось, а если даже и сохранилось - то не туда, а если сохранилось и туда - то не прочиталось при старте )).
Что вообще говоря и требовалось.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]