![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Браузер по реестру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 |