Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.032 c
5-1091283097
xZero
2004-07-31 18:11
2005.07.31
Компонент


1-1121090924
webpauk
2005-07-11 18:08
2005.07.31
Глюки с закрытием приложения


14-1120501263
i-s-v
2005-07-04 22:21
2005.07.31
Что слушаем?


3-1118921580
Сергей2
2005-06-16 15:33
2005.07.31
Использование процедуры из package


3-1119447236
zorik
2005-06-22 17:33
2005.07.31
sql - запись с максимальным элементом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский