Как прочитать значения настроек Firefox в C ++? - PullRequest
0 голосов
/ 25 февраля 2010

Мы используем следующий код для чтения значения предпочтения browser.search.defaultenginename из внешнего exe (без загрузки его в firefox) для получения поисковой системы по умолчанию для окна поиска в firefox. Мы перепробовали все возможные способы, но до сих пор не можем прочитать это значение. Возвращает пустую строку. Когда мы попытались получить тип предпочтения с помощью метода GetPrefType (), мы обнаружили, что тип предпочтения недопустим вместо строки.

Пожалуйста, помогите.

Метод:

CString ClassName :: GetDefaultSearchBox () {

CString strRetVal = L"unknown";

nsCOMPtr<nsIServiceManager> sp_ServMgr;

nsresult rv = NS_GetServiceManager((nsIServiceManager**)&sp_ServMgr);
if(!(NS_FAILED(rv)))
{
    nsCOMPtr<nsIPrefService> sp_PrefMon;
    rv = sp_ServMgr->GetServiceByContractID("@mozilla.org/preferences-service;1", 
        NS_GET_IID(nsIPrefService),
        getter_AddRefs(sp_PrefMon));
    if(!(NS_FAILED(rv)) && (NULL != sp_PrefMon))
    {
        nsCOMPtr<nsIPrefBranch> sp_PrefSelect;
        rv = sp_PrefMon->GetBranch("browser.search.", getter_AddRefs(sp_PrefSelect));
        if(!(NS_FAILED(rv)))
        {
            if(NULL != sp_PrefSelect)
            {
                nsCString nsstrSBX;
                sp_PrefSelect->GetCharPref("defaultenginename", getter_Copies(nsstrSBX));                   
                strRetVal = CString(nsstrSBX.get());
            }
        }
    }
}
return strRetVal;

}

1 Ответ

0 голосов
/ 25 февраля 2010

Глядя на http://mxr.mozilla.org/mozilla-central/source/toolkit/components/search/nsSearchService.js#1627 Я вижу, что код вызывает «GetComplexValue» для этого префа.Некоторое обсуждение этого типа в https://developer.mozilla.org/en/Code_snippets/Preferences.

...