2010-02-25 5 views
0

Nous utilisons le code suivant pour lire la valeur de préférence browser.search.defaultenginename depuis l'exe externe (sans le charger dans firefox) pour récupérer le moteur de recherche par défaut de searchbox dans firefox. Nous avons essayé tous les moyens possibles mais ne pouvons toujours pas lire cette valeur. Il renvoie une chaîne vide. Lorsque nous avons essayé d'obtenir le type de préférence en utilisant la méthode GetPrefType(), nous avons trouvé que le type de préférence est invalide au lieu de chaîne.Comment lire les valeurs de préférence de firefox en C++?

Aidez-nous s'il vous plaît.

Méthode:

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; 

}

Répondre

Questions connexes