Главная страница
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.026 c
14-1121185633
БарЛог
2005-07-12 20:27
2005.07.31
Можно ли поднимать руку на противоположный пол?


1-1121287971
ANB
2005-07-14 00:52
2005.07.31
Как определить, по какому контроллу кликнули мышей ?


1-1120682032
ronyn
2005-07-07 00:33
2005.07.31
Сохранение параметров и настроек программы при её закрытии


3-1119527686
stud
2005-06-23 15:54
2005.07.31
прошу помощи составить запрос


14-1120694921
vidiv
2005-07-07 04:08
2005.07.31
c++ под linux