vasketsov > 18-10-2012 20:56:15 |
Работаю с 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 не сохраняется. Что я делаю не так? |
vasketsov > 18-10-2012 21:33:14 |
>нифига непонятно что ты хочешь получить надо умудриться установить настройки прокси так, чтобы в других приложениях никаких изменений не случилось То есть только в рамках текущей сессии. |
hydrolizer > 18-10-2012 22:08:05 |
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); - т.е. имя бранча плюс имя настройки всегда должны давать полное имя настройки со всеми символами. |
vasketsov > 18-10-2012 23:05:11 |
>у ФФ свои отдельные настройки прокси которые систему не затрагивают У нас с Вами видимо разные понятия о "системе". Поскольку приложений, которые используют Mozilla ActiveX Control v1.7.12, может быть сильно больше чем 1, то все они с тем же успехом подпадают под требование "чтобы в других приложениях никаких изменений не случилось". А про системные настройки типа настроек MSIE я вообще ничего не имею в виду. >Без этой точки Ура. Благодарю. Всё получилось. Даже после закрытия софтины ничего никуда в \greprefs\all.js не записывается. Идеально. |
hydrolizer > 18-10-2012 23:47:04 |
Есть подозрение, что оно всё-таки пишется туда, куда обычно - в prefs.js в профиле. Чтобы на момент повторного открытия настройки были неизмененными, создайте в профиле файл user.js, и внесите туда нужные значения - тогда значения настроек будут меняться только на время сеанса. |
vasketsov > 19-10-2012 16:11:47 |
okkamas_knife пишетможно примерчики таких приложений?
1. Я разработчик ПО. Профессия такой. У меня таких есть несколько проектов. Вот теперь минимум в двух придётся залезть внутрь API мозиллы (прежде всего XPCOM), так что я не последний раз зашёл, сейчас вот с thread manager-ом бьюсь, пока он побеждает ))). 2. По чужим - понятия не имею. На него легко заменяется "штатный" ActiveX от M$, тот который IE, их в принципе можно вообще на лету переключать. Так что вообще говоря таковых может быть очень много. |
vasketsov > 19-10-2012 17:14:08 |
okkamas_knife пишетне понимаю на кой чёрт связываться с Activex даже мозилловским
Чтобы к имеющейся поддержке IE добавить мозиллу, что ж тут непонятного? Речь идёт не о проектах с нуля и только с поддержкой мозиллы. Речь о существующих проектах, в которых работает вебброузер IE и в котрые возможно добавить мозиллу примерно нахаляву. okkamas_knife пишетазрабы ФФ выкинут её или прекратят поддержку
Оно и так пятилетней давности наверное. Причина использования описана выше. Реализовывать отдельный броузер на геко даже не собираюсь, это немного другая тема по затратам. |
vasketsov > 19-10-2012 21:34:22 |
hydrolizer пишетЕсть подозрение, что оно всё-таки пишется туда, куда обычно - в prefs.js в профиле
Отчитываюсь. После того как я в коде инициализации закомментировал код установки работы без прокси (в рамках текущих настроек софтины) - то есть работать всё должно было с сохранёнными настройками - оно по-прежнему по-старому полезло в несуществующий проксик и обломалось. Так что судя по всему ничего никуда не сохранилось, а если даже и сохранилось - то не туда, а если сохранилось и туда - то не прочиталось при старте )). Что вообще говоря и требовалось. |