Мы используем следующий код для чтения значения предпочтения 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;
}