如何读取C++中Firefox的偏好值?
我们使用以下代码从外部exe读取首选项值browser.search.defaultenginename,而无需将其加载到firefox中以检索firefox中searchbox的默认搜索引擎。 我们已经尝试了所有可能的方法,但仍然无法读取此值。它正在返回空字符串。当我们尝试使用GetPrefType方法获取首选项类型时,我们发现首选项类型无效,而不是字符串 请帮忙 方法: CString类名称::GetDefaultSearchBox{如何读取C++中Firefox的偏好值?,firefox,Firefox,我们使用以下代码从外部exe读取首选项值browser.search.defaultenginename,而无需将其加载到firefox中以检索firefox中searchbox的默认搜索引擎。 我们已经尝试了所有可能的方法,但仍然无法读取此值。它正在返回空字符串。当我们尝试使用GetPrefType方法获取首选项类型时,我们发现首选项类型无效,而不是字符串 请帮忙 方法: CString类名称::GetDefaultSearchBox{ CString strRetVal = L"unknow
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;
}查看,我看到代码为此pref调用GetComplexValue。在中有一些关于此类型的讨论。感谢Mathew的快速回复。我也尝试过GetComplexValue方法,但仍然返回空值。