![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получит из ключа реестра, значения определённы типов [D6, WinXP]
ctranik © (2005-06-11 22:37:00)Здравтствуйте
Подскажите пожалуйста как с помощью API-функций получит из ключей реестра значения следующих типов :
- REG_DWORD
- REG_BINARY
а то у меня ничего неполучается
Заранее благодарен
Просто Джо (2005-06-14 01:00:00) [1]Посмотри исходники метода TRegistry.GetValueNames в модуле Registry.pas - там все просто до безобразия.
ctranik (2005-06-13 20:43:00) [2]Просто Джо, привет
в параметр lpValueName ,я непередаю никакой экземпляр TStringList
вот функция котороя отвечает за поиск типа значений и самих данных в открытом ключе.
Возникнут вопросы отвечу , только помоги пожалуйста понять как прочесть Двоичные данные, со строковыми данными функция справляется без проблем.
procedure FindValue(CK:HKey;Path,GlobalTargetkey,CurrentTargetKey:string;Select:boolean;var OutList:TstringList);
var
valuelist:tstringlist;
SubBuffer:array[0..1001] of char;
Data: array [0..1001] of byte;
subbufersize:cardinal;
subindex,datasize,datatype:integer;
s:string;
begin
valuelist:=tstringlist.Create;
subindex:=0 ; subbufersize:=1001; datasize:=1001;
while RegEnumValue(ck,subindex,subbuffer,subbufersize,nil,@datatype,@data,@datasize) ERROR_NO_MORE_ITEMS do begin
s:=strpas(subbuffer);
if s='' then s:='Ïî óìîë÷àíèþ';
case Select of
true : valuelist.Add(s+' : '+ PChar(@data));
false: begin
if pos(CurrentTargetKey,s)>0 then valuelist.Add(s+' : '+PChar(@data))
else
if pos(CurrentTargetKey,PChar(@data))>0 then valuelist.Add(s+' : '+PChar(@data));
end; //false
end;//case
inc(subindex);
subbufersize:=1001; datasize:=1001;
end; //while
if (select=true)and(valuelist.Count>0) then begin
outlist.Add('[');
outlist.AddStrings(valuelist);
outlist.Add(']');
end//if
else
if (select=false)and(valuelist.Count>0) then begin
outlist.Add(GlobalTargetkey+' -- '+path);
outlist.Add('[');
outlist.AddStrings(valuelist);
outlist.Add(']');
end;
valuelist.Free;
end;
> Просто Джо
Просто Джо (2005-06-12 15:14:00) [3]Разреши поинтересоваться: ты что в качестве значения для параметра lpValueName так прямо и передаешь экземпляр TStringList? Весело, однако. Уточни, пожалуйста, а лучше приведи кусок своего кода, а то будет совсем грустно.
ctranik (2005-06-12 11:51:00) [4]
> Anatoly Podgoretsky
привет
использую API -функцию RegEnumValue (
HKEY hKey,
DWORD dwIndex,
LPTSTR lpValueName,
LPDWORD lpcbValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData) ,
там есть параметр " LPBYTE lpData ", в который загружаются данные, так вот если тип данных " REG_SZ" то всё нормально пишется в мой список (TstringList), а вот если тип данных "REG_DWORD " или " REG_BINARY " то в мой список записывается только имя параметра а сами данные нет.
Что я должен делать ?
Anatoly Podgoretsky (2005-06-11 23:03:00) [5]И как у тебя не получается?
Ученик (2005-06-11 22:53:00) [6]Пример в Delphi?\Source\Rtl\Common\Registry.pas