Форум: "WinAPI";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Внизполучит из ключа реестра, значения определённы типов Найти похожие ветки
← →
ctranik (2005-06-11 22:37) [0]Здравтствуйте
Подскажите пожалуйста как с помощью API-функций получит из ключей реестра значения следующих типов :
- REG_DWORD
- REG_BINARY
а то у меня ничего неполучается
Заранее благодарен
← →
Ученик (2005-06-11 22:53) [1]Пример в Delphi?\Source\Rtl\Common\Registry.pas
← →
Anatoly Podgoretsky © (2005-06-11 23:03) [2]И как у тебя не получается?
← →
ctranik (2005-06-12 11:51) [3]
> 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 " то в мой список записывается только имя параметра а сами данные нет.
Что я должен делать ?
← →
Просто Джо © (2005-06-12 15:14) [4]Разреши поинтересоваться: ты что в качестве значения для параметра lpValueName так прямо и передаешь экземпляр TStringList? Весело, однако. Уточни, пожалуйста, а лучше приведи кусок своего кода, а то будет совсем грустно.
← →
ctranik (2005-06-13 20:43) [5]Просто Джо, привет
в параметр 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-14 01:00) [6]Посмотри исходники метода TRegistry.GetValueNames в модуле Registry.pas - там все просто до безобразия.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c