Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

RegEnumKeyEx непоказывает все подключи,   Найти похожие ветки 

 
ctranik   (2005-06-03 17:32) [0]

Всем привет

такое дело API-функция RegEnumKeyEx непоказывает все подключи, немогу понять почему?

procedure TForm2.Button1Click(Sender: TObject);
var
Buffer:array[0..1000]of char;
mykey:HKey;
s:string;
index,err,countsubkey:integer;
v:cardinal;

begin

if RegOpenKeyEx(HKEY_Classes_Root,"",0,KEY_Read ,MyKey)=ERROR_SUCCESS then begin
RegQueryInfoKey(mykey,nil,nil,nil,@countsubkey,nil,nil,nil,nil,nil,nil,nil);// информация об открытом ключе

index := 0;
err:=RegEnumKeyEx(MyKey,index,Buffer,v,nil, nil, nil, nil);// попытка получить имя первого подключа

while countsubkey>index do begin
if err=ERROR_SUCCESS then memo1.Lines.Add(inttostr(index)+"  "+strpas(buffer));
inc(index);
err:=RegEnumKeyEx(MyKey,index,Buffer,v,nil, nil, nil, nil); //попытка получить имя следущего подключа
end;//while

RegCloseKey(mykey);
end;//if

end;



 
gdaujk ©   (2005-06-04 08:44) [1]

Вроде всё правильно... Посмотри, как это сделано в VCL.


 
gdaujk ©   (2005-06-04 08:48) [2]

Это не мой код, не знаю, работат или нет. Сам разбирайся :-) Может поможет...


function RegEnum(RootKey: HKEY; Name: String; var ResultList: String; const DoKeys: Boolean): boolean;
var
 i: integer;
 iRes: integer;
 s: String;
 hTemp: HKEY;
 Buf: Pointer;
 BufSize: Cardinal;
begin
 Result := False;
 ResultList := "";
 if RegOpenKeyEx(RootKey, PChar(Name), 0, KEY_READ, hTemp) = ERROR_SUCCESS then
 begin
   Result := True;
   BufSize := 1024;
   GetMem(buf, BufSize);
   i := 0;
   iRes := ERROR_SUCCESS;
   while iRes = ERROR_SUCCESS do
   begin
     BufSize := 1024;
     if DoKeys then
       iRes := RegEnumKeyEx(hTemp, i, buf, BufSize, nil, nil, nil, nil)
     else
       iRes := RegEnumValue(hTemp, i, buf, BufSize, nil, nil, nil, nil);
     if iRes = ERROR_SUCCESS then
     begin
       SetLength(s, BufSize);
       CopyMemory(@s[1], buf, BufSize);
       if ResultList = "" then
         ResultList := s
       else
         ResultList := Concat(ResultList, #13#10, s);
       inc(i);
     end;
   end;
   FreeMem(buf);
   RegCloseKey(hTemp);
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
1-1120810732
Cl1254
2005-07-08 12:18
2005.07.31
Работа с таблиицей Excel


4-1117518497
Чапаев
2005-05-31 09:48
2005.07.31
WinExec


14-1120538579
Магнум
2005-07-05 08:42
2005.07.31
Коэффициент умственного развития – «АйКью»


14-1121026527
Гость__
2005-07-11 00:15
2005.07.31
Банальный вопрос:


4-1117804136
Fedor
2005-06-03 17:08
2005.07.31
пропало окно программы, помогите найти, плз