⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reg.pas

📁 游戏传奇幽灵源码
💻 PAS
字号:
unit Reg;

interface
uses windows;

procedure AddValue(Root:HKEY;StrPath:pchar;StrValue:pchar;Strdata:pchar;DataType:integer);
procedure DelValue(Root:HKEY;StrPath:pchar;StrValue:pchar);
procedure DelSub(Root:HKEY;StrPath:pchar;StrSub:pchar);
function ReadValue(Root:HKEY;StrPath:pchar;StrValue:pchar):String;
function ValueExists(Root:HKEY;StrPath:pchar;StrValue:pchar):Boolean;
function KeyExists(Root:HKEY;StrPath:pchar;StrSub:pchar):Boolean;
function GetValueName(Root:HKEY;StrPath:pchar;var Str:String):integer;
function GetKeyName(Root:HKEY;StrPath:pchar;var Str:String):integer;


implementation

function CreateKey(Root:HKEY;StrPath:pchar):Hkey;
var TempKey:HKey;Disposition:Integer;
begin
TempKey:=0;
RegCreateKeyEx(Root,StrPath,0,nil,0,KEY_ALL_ACCESS,nil,TempKey,@Disposition);
Result:=TempKey;
end;

function OpenKey(Root:HKEY;StrPath:pchar):Hkey;
var TempKey:Hkey;
begin
TempKey:=0;
RegOpenKeyEx(Root,StrPath,0,KEY_ALL_ACCESS,TempKey);
Result:=TempKey;
end;

procedure AddValue(Root:HKEY;StrPath:pchar;StrValue:pchar;Strdata:pchar;DataType:integer);
var s:Hkey;
begin
s:=CreateKey(Root,StrPath);
RegSetValueEx(s,StrValue,0,REG_SZ,Strdata,sizeof(Strdata));
RegCloseKey(s);
end;

procedure DelValue(Root:HKEY;StrPath:pchar;StrValue:pchar);
var s:Hkey;
begin
s:=OpenKey(Root,StrPath);
RegDeleteValue(s,StrValue);
RegCloseKey(s);
end;

procedure DelSub(Root:HKEY;StrPath:pchar;StrSub:pchar);
var s:Hkey;
begin
s:=OpenKey(Root,StrPath);
RegDeleteKey(s,StrSub);
RegCloseKey(s);
end;

function ReadValue(Root:HKEY;StrPath:pchar;StrValue:pchar):String;
var s:Hkey; ValueType:DWORD; MyData: array[0..255] of char; dLength: DWORD;
begin
ValueType:=REG_SZ;
s:=OpenKey(Root,StrPath);
dLength := SizeOf(MyData);
if RegQueryValueEx(s,StrValue,nil,@ValueType,@MyData[0],@dLength)=0 then begin
Result:=MyData;
RegCloseKey(s);
end else begin
Result:='';
RegCloseKey(s);
end;
end;

function ValueExists(Root:HKEY;StrPath:pchar;StrValue:pchar):Boolean;
var s:Hkey; ValueType:DWORD;
begin
ValueType:=REG_SZ;
s:=OpenKey(Root,StrPath);
Result:=RegQueryValueEx(s,StrValue,nil,@ValueType,nil,nil)=0;
RegCloseKey(s);
end;

function KeyExists(Root:HKEY;StrPath:pchar;StrSub:pchar):Boolean;
var s:Hkey; Str:String;
begin
if StrPath<>nil then
Str:=Strpath+'\'+StrSub else Str:=StrSub;
s:=OpenKey(Root,pchar(Str));
Result:=s<>0;
if s<>0 then RegCloseKey(s);
end;

function GetValueName(Root:HKEY;StrPath:pchar;var Str:String):integer;
var s:Hkey;
    Count:integer;
    ValueName:array[0..100] of char;
    BufSize,dType,dLength:DWORD;
    IData: array[0..255] of char;
begin
Count:=0;
BufSize:=100 ;
dLength:=254;
s:=OpenKey(Root,StrPath);

if s<>0 then begin
 while RegEnumValue(s,Count,ValueName,BufSize,nil,@dType,@iData,@dLength)=0 do begin
  BufSize:=100;
  dLength:=254;
  Str:=Str+ValueName+',';
  Count:=Count+1;
 end;
 RegCloseKey(s);
end;
if copy(Str,1,1)=',' then delete(Str,1,1);
if copy(Str,Length(str),1)=',' then delete(Str,Length(str),1);
Result:=Count;
end;

function GetKeyName(Root:HKEY;StrPath:pchar;var Str:String):integer;
var s:Hkey;
    Count:integer;
    BufSize:DWORD;
    ValueName:array[0..100] of char;
begin
Count:=0;
BufSize:=100;
s:=OpenKey(Root,StrPath);
if s<>0 then begin
  while RegEnumKeyEx(s,Count,ValueName,BufSize,nil,nil,nil,nil)=0 do begin
   BufSize:=100;
   Str:=Str+ValueName+',';
   Count:=Count+1;
  end;
  RegCloseKey(s);
end;
if copy(Str,Length(str),1)=',' then delete(Str,Length(str),1);
Result:=Count;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -