2010-06-21 15 views

Répondre

5

Vous cherchez TRegistry.GetKeyNames(Strings: TStrings);

help: Renvoie une liste de chaînes contenant les noms de tous les sous-clés appartenant à la clé actuelle.

0
function GetRegSubTree(MainKey : LongInt; var aList : TStringList; aKey : 
string) : Boolean; 
var 
    hRoot   : HKEY; 
    lItem   : LongInt; 
    hError   : LongInt; 
    szKey,pData   : PChar; 
    aString  : String; 

begin 
    GetRegSubTree:=false; 
    if aList=Nil then exit; 
{create pointers for the API} 
    szKey := StrAlloc(Length(aKey) + 1); 
    StrPCopy(szKey, aKey); 
    lItem := 0; 
    pData := StrAlloc(1024); 

    hError := RegOpenKey(MainKey, szKey, hRoot); 
    if hError = ERROR_SUCCESS then 
    begin 
    while (hError = ERROR_SUCCESS) do 
    begin 
     hError := RegEnumKey(hRoot, lItem, pData, 1024); 
     if (hError = ERROR_SUCCESS) then 
     begin 
      GetRegSubTree:=true; 
      aList.Add(StrPas(pData)); 
      Inc(lItem); 
     end; 
    end; 
    RegCloseKey(hRoot); 
    end; 
    StrDispose(szKey); 
    StrDispose(pData); 
end; 
+0

Pourquoi utilisez-vous de l'API quand il y a une très bonne et plus facile à utiliser classe wrapper pour eux (TRegistry)? –

+1

@Marjan Venema, seulement si vous voulez que votre taille d'exécutable soit aussi petite que possible – Luthfi

+0

+1 DonnVall. Pour moi, j'utilise le moyen le plus simple/le plus simple de réduire la taille. – XBasic3000