(Moderator)
Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
Delphi 2006 Professional
|
Re: Probleme beim Auslesen der Registry
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
|
|
Zitat
|