2010-02-25 2 views
0

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

}

ответ

0

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

+0

спасибо за быстрый ответ Мэтью. Я также попытался использовать метод GetComplexValue(), но все еще возвращаю его пустое значение. – user281450

Смежные вопросы