![]() |
![]() ![]() ![]() ![]() |
|
Браузер по рееструDelphi , ОС и Железо , Реестр
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, Outline, ComCtrls, ImgList, ExtCtrls;
type
TRegForm = class(TForm)
TreeView1: TTreeView;
ListView1: TListView;
ImageList1: TImageList;
ImageList2: TImageList;
Splitter1: TSplitter;
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure FormDestroy(Sender: TObject);
procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
procedure TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
procedure ShowSubKeys(ParentNode: TTreeNode; depth: Integer);
function GetFullNodeName(Node: TTreeNode): string;
end;
var
RegForm: TRegForm;
implementation
uses registry;
{$R *.DFM}
var reg: TRegistry;
function TRegForm.GetFullNodeName(Node: TTreeNode): string;
var CurNode: TTreeNode;
begin
Result := ''; CurNode := Node;
while CurNode.Parent <> nil do
begin
Result := '\' + CurNode.Text + Result;
CurNode := CurNode.Parent;
end;
end;
procedure TRegForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var s: string;
KeyInfo: TRegKeyInfo;
ValueNames: TStringList;
i: Integer;
DataType: TRegDataType;
begin
ListView1.Items.Clear;
s := GetFullNodeName(Node);
if not Reg.OpenKeyReadOnly(s) then Exit;
Reg.GetKeyInfo(KeyInfo);
if KeyInfo.NumValues <= 0 then Exit;
ValueNames := TStringList.Create;
Reg.GetValueNames(ValueNames);
for i := 0 to ValueNames.Count - 1 do
with ListView1.Items.Add do
begin
Caption := ValueNames[i];
DataType := Reg.GetDataType(ValueNames[i]);
case DataType of
rdString: s := Reg.ReadString(ValueNames[i]);
rdInteger: s := '0x' + IntToHex(Reg.ReadInteger(ValueNames[i]), 8);
rdBinary: s := 'Binary';
else s := '???';
end;
SubItems.Add(s);
ImageIndex := 1;
end;
ValueNames.Free;
end;
procedure TRegForm.ShowSubKeys(ParentNode: TTreeNode; depth: Integer);
var ParentKey: string;
KeyNames: TStringList;
KeyInfo: TRegKeyInfo;
CurNode: TTreeNode;
i: Integer;
begin
Cursor := crHourglass;
TreeView1.Items.BeginUpdate;
ParentKey := GetFullNodeName(ParentNode);
if ParentKey <> '' then
Reg.OpenKeyReadOnly(ParentKey)
else
Reg.OpenKeyReadOnly('\');
Reg.GetKeyInfo(KeyInfo);
if KeyInfo.NumSubKeys <= 0 then Exit;
KeyNames := TStringList.Create;
Reg.GetKeyNames(KeyNames);
while ParentNode.GetFirstChild <> nil do ParentNode.GetFirstChild.Delete;
if (KeyNames.Count > 0) then for i := 0 to KeyNames.Count - 1 do
begin
Reg.OpenKeyReadOnly(ParentKey + '\' + KeyNames[i]);
Reg.GetKeyInfo(KeyInfo);
CurNode := TreeView1.Items.AddChild(ParentNode, KeyNames[i]);
if KeyInfo.NumSubKeys > 0 then
begin
TreeView1.Items.AddChild(CurNode, ''); //
end;
end;
KeyNames.Free;
TreeView1.Items.EndUpdate;
Cursor := crDefault;
end;
procedure TRegForm.FormCreate(Sender: TObject);
var root: TTreeNode;
begin
Reg := TRegistry.Create;
ListView1.ViewStyle := vsReport;
with ListView1 do
begin
with Columns.Add do begin Width := ListView1.Width div 3 - 2; Caption := 'Name'; end;
with Columns.Add do begin Width := ListView1.Width div 3 * 2 - 2; Caption := 'Value'; end;
end;
TreeView1.Items.Clear;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Root := TreeView1.Items.Add(nil, 'HKEY_LOCAL_MACHINE');
TreeView1.Items.AddChild(root, '');
end;
procedure TRegForm.FormDestroy(Sender: TObject);
begin
Reg.Free;
end;
procedure TRegForm.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
begin
ShowSubKeys(Node, 1);
end;
procedure TRegForm.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
with Node do
begin
if Expanded then ImageIndex := 2
else ImageIndex := 3;
end;
end;
end.
Программа на Delphi, которая создает графическое приложение для просмотра и прослушивания ключей и значений реестра на локальном компьютере. Вот разбивка кода: Основная форма
Основная форма ( Контроль дерева
Контроль дерева используется для отображения ключей реестра. Процедура Контроль списка
Контроль списка используется для отображения значений реестра. Процедура Операции реестра
Проект использует класс Показать подключения Эта процедура вызывается при расширении узла или при первом загрузке дерева. Она загружает подключения для выбранного ключа в дерево. Функция полного имени узла Эта функция возвращает полный путь реестра поиска, проецируя вверх до корневого узла. Процедура TreeView1Change Эта процедура вызывается при выборе узла в дереве. Она загружает значения для этого ключа в список. Процедура FormCreate
Эта процедура инициализирует форму и настраивает компоненты. Она также создает новый объект Процедура FormDestroy
Эта процедура освобождает объект В целом, это проект простого способа просмотра и прослушивания ключей и значений реестра на локальном компьютере с помощью Delphi. Браузер по реестру для просмотра и управления хранилищем Windows Registry. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||