Мы используем следующий код для чтения значения предпочтения browser.search.defaultenginename от внешнего exe (без загрузки его в firefox) для извлечения поисковой системы по умолчанию в firefox. Мы пробовали все возможные пути, но все еще не можем прочитать это значение. Он возвращает пустую строку. Когда мы попытались получить тип предпочтения с использованием метода GetPrefType(), мы обнаружили, что тип предпочтения недопустим, а не строка.Как читать значения предпочтений firefox в C++?
Пожалуйста, помогите.
Метод:
CString ИмяКласса :: 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;
}
спасибо за быстрый ответ Мэтью. Я также попытался использовать метод GetComplexValue(), но все еще возвращаю его пустое значение. – user281450