Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Probleme beim Auslesen der Registry

  Alt 13. Aug 2005, 16:34
dann eben so:

zum befüllen des Tree:
Delphi-Quellcode:
procedure ShowRegInTree(ATree: TTreeView; AParentNode: TTreeNode; ARegPath: String);
var LRegistry, LReg2: TRegistry;
    LNames: TStringlist;
    LCount: Integer;
    LNode: TTreeNode;
begin
  ATree.Items.BeginUpdate;
  LRegistry := TRegistry.Create;
  LNode := AParentNode;
  while (LNode.Data = nil) and Assigned(LNode.Parent) do
    LNode := LNode.Parent;
  LRegistry.RootKey := HKey(LNode.Data);
  AParentNode.DeleteChildren;
  if LRegistry.OpenKey(ARegPath, False) then
  begin
    LReg2 := TRegistry.Create;
    LReg2.RootKey := LRegistry.RootKey;
    LNames := TStringList.Create;
    LRegistry.GetKeyNames(LNames);
    for LCount := 0 to LNames.Count - 1 do
    begin
      LNode := ATree.Items.AddChild(AParentNode, LNames.Strings[LCount]);
      if LReg2.OpenKeyReadOnly(ARegPath + '\' + LNames.Strings[LCount]) then
      begin
        if LReg2.HasSubKeys then
          ATree.Items.AddChild(LNode, '\');
        LReg2.CloseKey;
      end;
    end;
    LNames.Free;
    LRegistry.CloseKey;
    LReg2.Free;
  end;
  LRegistry.Free;
  ATree.Items.EndUpdate;
end;
Ganz am Anfang um erstmal root-Items in den Baum zu bekommen
Delphi-Quellcode:
var LNode: TTreeNode;
begin
  //Root
  LNode := TreeView1.Items.AddChild(nil, 'Root');
  LNode.Data := Pointer(HKEY_CLASSES_ROOT);
  ShowRegInTree(TreeView1, LNode, '');
  //User
  LNode := TreeView1.Items.AddChild(nil, 'User');
  LNode.Data := Pointer(HKEY_CURRENT_USER);
  ShowRegInTree(TreeView1, LNode, '');
und im OnExpanding:
Delphi-Quellcode:
var LPath: String;
    LNode2: TTreeNode;
begin
  AllowExpansion := True;
  if (Node.Count = 1) and (Node.Item[0].Text = '\') then
  begin
    LNode2 := Node;
    LPath := LNode2.Text;
    while Assigned(LNode2.Parent) and (LNode2.Parent.Data = nil) do
    begin
      LNode2 := LNode2.Parent;
      LPath := LNode2.Text + '\' + LPath;
    end;
    ShowRegInTree(TreeView1, Node, LPath);
  end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat