📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include "addvalue.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool ExpandCollapseFlag=true;
TStrings *Tempstr;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AnsiString hkey[6]={"HKEY_CLASSES_ROOT","HKEY_CURRENT_USER",
"HKEY_LOCAL_MACHINE","HKEY_USER",
"HKEY_CURRENT_CONFIG","HKEY_DYN_DATA"};
reg=new TRegistryIniFile("");
str=new TStringList();
Tempstr=new TStringList();
for(int i=0;i<6;i++)
ComboBox1->Items->Add(hkey[i]);
ComboBox1->Text=hkey[1];
RadioButton1->Checked=false;
RadioButton2->Checked=true;
TreeView1->Items->Add(NULL,"HKEY_CURRENT_USER");
Node=TreeView1->Items->Item[0];
GetAllKeys(Node,reg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1Click(TObject *Sender)
{
int i;
if(RadioButton2->Checked)
{
if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected->Count==0)
{
delete reg;
str->Clear();
reg=new TRegistryIniFile(AppendKey(TreeView1->Selected));
reg->RegIniFile->OpenKey("",false);
ShowRegValue(reg,AppendKey(TreeView1->Selected));
}
}
else
ShowIniValue(ini,TreeView1->Selected->Text);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::AppendKey(TTreeNode *key)
{
AnsiString KeyPath;
TTreeNode *Parent;
Parent=key;
KeyPath=key->Text;
do{
if(Parent->Parent!=TreeView1->Items->Item[0])
KeyPath=Parent->Parent->Text+"\\"+KeyPath;
Parent=Parent->Parent;
}while(Parent->Parent!=NULL);
return KeyPath;
}
void __fastcall TForm1::ShowRegValue(TRegistryIniFile *newreg,AnsiString KeyPath)
{
int i=0;
TStrings *keyname=new TStringList(),*keyvalue=new TStringList();
if(newreg!=NULL)
{
newreg->RegIniFile->ReadSection("",keyname);
newreg->RegIniFile->ReadSectionValues("",keyvalue);
ListView1->Items->Clear();
if(keyname->Count==0)
{
ListView1->Items->Add();
ListView1->Items->Item[0]->Caption="默认";
}
else
{
for(i=0;i<keyname->Count;i++)
{
ListView1->Items->Add();
ListView1->Items->Item[i]->Caption = keyname->Strings[i];
ListView1->Items->Item[i]->SubItems->Add(keyvalue->Strings[i]);
}
}
}
else
return;
delete keyname,keyvalue;
return;
}
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
HKEY hkey[6]={HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG,HKEY_DYN_DATA};
int SelectHkey,i;
SelectHkey=ComboBox1->ItemIndex;
TreeView1->Items->Clear();
delete reg;
reg=new TRegistryIniFile("");
reg->RegIniFile->RootKey=hkey[SelectHkey];
reg->RegIniFile->OpenKey("",true);
TreeView1->Items->Add(NULL,ComboBox1->Items->Strings[ComboBox1->ItemIndex]);
Node=TreeView1->Items->Item[0];
GetAllKeys(Node,reg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
ComboBox1->Enabled=RadioButton2->Checked;
if(RadioButton1->Checked)
if(OpenDialog1->Execute())
{
str->Clear();
TreeView1->Items->Clear();
ListView1->Items->Clear();
ini=new TIniFile(OpenDialog1->FileName);
ini->ReadSections(str);
TreeView1->Items->Add(NULL,ExtractFileName(OpenDialog1->FileName));
Node=TreeView1->Items->Item[0];
for(int i=0;i<str->Count;i++)
TreeView1->Items->AddChild(Node,str->Strings[i]);
}
else
return;
else
return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ShowIniValue(TIniFile * newini,AnsiString Key)
{
int i=0;
TStrings *keyname=new TStringList(),*keyvalue=new TStringList();
if(newini!=NULL)
{
newini->ReadSection(Key,keyname);
newini->ReadSectionValues(Key,keyvalue);
ListView1->Items->Clear();
if(keyname->Count==0)
{
ListView1->Items->Add();
ListView1->Items->Item[0]->Caption="默认";
}
else
{
for(i=0;i<keyname->Count;i++)
{
ListView1->Items->Add();
ListView1->Items->Item[i]->Caption = keyname->Strings[i];
ListView1->Items->Item[i]->SubItems->Add(keyvalue->Strings[i]);
}
}
}
else
return;
delete keyname,keyvalue;
return;
}
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if(RadioButton1->Checked&&ini!=NULL)
{
if(Form2->ShowModal()==mrOk)
if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected!=NULL)
{
ini->WriteString(TreeView1->Selected->Text,Form2->Edit1->Text,Form2->Edit2->Text);
ShowIniValue(ini,TreeView1->Selected->Text);
}
else
return;
else
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if(RadioButton1->Checked&&ini!=NULL)
{
if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected!=NULL)
{
if(Application->MessageBox("确实要删除此键吗?","",MB_OKCANCEL+MB_ICONQUESTION)!=IDCANCEL)
{
ini->DeleteKey(TreeView1->Selected->Text,ListView1->Selected->Caption);
ShowIniValue(ini,TreeView1->Selected->Text);
}
else
return;
}
else
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
if(RadioButton1->Checked&&ini!=NULL)
{
if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected!=NULL&&ListView1->Selected!=NULL)
{
Form2->Caption="修改键值";
Form2->Edit1->Text=ListView1->Selected->Caption;
Form2->Edit1->Enabled=false;
Form2->Edit2->Text=ListView1->Selected->SubItems->Text;
if(Form2->ShowModal()==mrOk)
{
ini->WriteString(TreeView1->Selected->Text,Form2->Edit1->Text,Form2->Edit2->Text);
ShowIniValue(ini,TreeView1->Selected->Text);
Form2->Caption="设置键值";
Form2->Edit1->Enabled=true;
}
else
return;
}
else
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{
if(ExpandCollapseFlag)
{
TreeView1->FullExpand();
ExpandCollapseFlag=false;
}
else
{
TreeView1->FullCollapse();
ExpandCollapseFlag=true;
}
}
//---------------------------------------------------------------------------
void TForm1::GetAllKeys(TTreeNode * CurrentNode,TRegistryIniFile *CurrentReg)
{
int m,j;
TRegistryIniFile *TempReg;
if(CurrentReg->RegIniFile->HasSubKeys())
{
Tempstr->Clear();
if(CurrentReg->RegIniFile->HasSubKeys())
CurrentReg->ReadSections(Tempstr);
for(m=0;m<Tempstr->Count;m++)
TreeView1->Items->AddChild(CurrentNode,Tempstr->Strings[m]);
for(j=0;j<CurrentNode->Count;j++)
{
if(reg!=NULL)
delete reg;
reg=new TRegistryIniFile(AppendKey(CurrentNode->Item[j]));
reg->RegIniFile->OpenKey("",false);
if(reg->RegIniFile->HasSubKeys())
GetAllKeys(CurrentNode->Item[j],reg);
else
continue;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -